http://bennolan.com/behaviour/ 為了避免在html中引入過多的script tag,尤其現(xiàn)在富客戶端應(yīng)用很火的時候,script寫的就越發(fā)的多。
官方網(wǎng)站舉了一個這樣子的例子
<div id="image_16209134_normal">
<script language="Javascript">
photo_hash['16209134'] = new Object();
photo_hash['16209134'].title = '2am on Saturday';
</script>
<h4 id="title_div16209134"
style="margin-bottom: 0px; margin-top: 0px;">
2am on Saturday
</h4>
<script type="text/javascript">
initPhotosUserPageTitle_div('16209134');</script>
這是Flickr上面一段代碼。確實,它使得代碼閱讀起來結(jié)構(gòu)不清晰了。Behavior應(yīng)用之后,不需在元素上寫明觸發(fā)事件要執(zhí)行的方法,比如
<a onclick="this.parentNode.removeChild(this)" href="#">
Click me to delete me
</a>
而變成了
<ul id="example">
<li>
<a href="/someurl">Click me to delete me</a>
</li>
</ul>
那么javascript如果找到這個a鏈接并加上onclick事件方法的呢?采用css selector
var myrules = {
'#example li' : function(el){
el.onclick = function(){
this.parentNode.removeChild(this);
} }};
Behaviour.register(myrules);
確實看起來,html清爽了,但是,卻引入了其他的元素。ok,我們可以為每個控件定義id,其實也未嘗不可,asp.net不也是web component開發(fā)的時候都定義id的么?可似乎又脫褲子放屁之嫌。在維護(hù)一個對某一組應(yīng)用相同樣式或響應(yīng)
相同方法的html控件上應(yīng)用behavior,有意義,起碼不必每個上面都寫上onclick之類的,但是對于更普遍的應(yīng)用,每個html控件要做得事情是不同的啊。那個時候,不但用behavior代碼量增加了,而且維護(hù)一個var myrules里的內(nèi)容和去刪除控件上的onclick其實工作量差不多。真正的應(yīng)用可不是demo啊,列出來一排link寫著remove me,然后執(zhí)行一樣的動作。
不過正如我上面說的,還是有一定的應(yīng)用場景的,大家可以在有此需求的時候考慮,還有一Behaviour.js