我想尝试一个新的JavaScript库。曾经使用过(并喜欢)jQuery 1.3的"Live"事件,我希望下一个我尝试的库在事件系统中内置事件委托。Wikipedia的JS库比较在这方面做得不好。
看起来MooTools将在2.0中实现。其他库呢?
我正在制作这个社区wiki。请帮我完善列表。
Prototype:否
jQuery:自1.3以来
MooTools:自2.0以来
ExtJS:是
我想尝试一个新的JavaScript库。曾经使用过(并喜欢)jQuery 1.3的"Live"事件,我希望下一个我尝试的库在事件系统中内置事件委托。Wikipedia的JS库比较在这方面做得不好。
看起来MooTools将在2.0中实现。其他库呢?
我正在制作这个社区wiki。请帮我完善列表。
Prototype:否
jQuery:自1.3以来
MooTools:自2.0以来
ExtJS:是
事件委托比你想象的要简单。
如果我发现一个没有自动事件委托功能的库,我只需为其添加一层即可。
事件委托就是把事件处理器挂在 DOM 树的更高层。所有的框架都能/应该能够做到这一点。处理器应该能够捕捉任何冒泡的事件。事件包含触发它的元素,从而处理程序可以执行任何操作。
Prototype 没有任何事件委托糖来自于像 jQuery 的 $.fn.live
, 但是很容易构建一个函数来捕捉事件并使用它们的目标元素进行操作。
document.observe('click',function(event){alert(event.element().inspect())})
你可以使用这个方法很容易地克隆 jQuery 的实时(live)功能(我并不是说这会有很高的性能表现或者其他什么)。
live = function(selector,callback){
document.observe("click",function(e){
var element = e.element()
if (!element.match(selector))
element = element.ancestors().find(function(elem){return elem.match(selector)});
else
element = null
if (element)
callback.apply(element)
})
}
live("div",function(){this.setStyle({color:'blue'})})
我想说的是,事件委托已经内置在JavaScript中了。库只是增加了一些语法糖。