Behaviour.js 真正的清洁了html?

http://bennolan.com/behaviour/   为了避免在html中引入过多的script tag,尤其现在富客户端应用很火的时候,script写的就越发的多。
官方网站举了一个这样子的例子

<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上面一段代码。确实,它使得代码阅读起来结构不清晰了。Behavior应用之后,不需在元素上写明触发事件要执行的方法,比如
<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开发的时候都定义id的么?可似乎又脱裤子放屁之嫌。在维护一个对某一组应用相同样式或响应
相同方法的html控件上应用behavior,有意义,起码不必每个上面都写上onclick之类的,但是对于更普遍的应用,每个html控件要做得事情是不同的啊。那个时候,不但用behavior代码量增加了,而且维护一个var myrules里的内容和去删除控件上的onclick其实工作量差不多。真正的应用可不是demo啊,列出来一排link写着remove me,然后执行一样的动作。
不过正如我上面说的,还是有一定的应用场景的,大家可以在有此需求的时候考虑,还有一Behaviour.js





你可能感兴趣的:(Behaviour.js 真正的清洁了html?)