哪些JavaScript库支持事件委托?

5

我想尝试一个新的JavaScript库。曾经使用过(并喜欢)jQuery 1.3的"Live"事件,我希望下一个我尝试的库在事件系统中内置事件委托。Wikipedia的JS库比较在这方面做得不好。

看起来MooTools将在2.0中实现。其他库呢?

我正在制作这个社区wiki。请帮我完善列表。

Prototype:否

jQuery:自1.3以来

MooTools:自2.0以来

ExtJS:是

5个回答

2

事件委托比你想象的要简单。

如果我发现一个没有自动事件委托功能的库,我只需为其添加一层即可。


好的。那么哪些库没有事件委托呢? :-) - Nosredna

2
我建议看一下Prototype。它在SO上的出现频率与jQuery相当,并且我将其用作我的所有项目中的JS库。
我不认为它内置了委托,但它是一个具有必要功能的完整库,可以根据需要添加委托。

我会在表格中列出Prototype并标记为“否”。 - Nosredna

1

事件委托就是把事件处理器挂在 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中了。库只是增加了一些语法糖。


我正在编制一个列表,列出哪些添加了糖。 - Nosredna
没错。但是,我觉得尝试在原型中重新实现live会很有趣,看看它有多容易。结果发现,非常容易。 - BaroqueBobcat

1
如果你喜欢使用Jquery,但想尝试一些不同的东西,我建议你试试mootools。Aarons事件委托插件的链接以及他关于如何使用原始插件的教程应该能够满足你的需求。关于哪个更好的讨论很多,但最终只是看你自己的喜好。
Mootools非常出色,并且有一些很棒的插件,你还应该查看David Walsh的作品,他做了很多mootools开发和一些Jquery。他发布了一些有趣的内容。 http://davidwalsh.name

我打算在2.0发布后尽快尝试MooTools,我认为这很快就会实现。 - Nosredna

1

Ext Js 我相信一直都有。


确实。Ext还将事件委托内置到其许多小部件中,例如处理拖放和其他事件密集型交互以最大化性能。 - Brian Moeskau

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接