【问题标题】:Which JavaScript libraries have event delegation?哪些 JavaScript 库具有事件委托?
【发布时间】:2009-06-20 00:19:48
【问题描述】:

我想试用一个新的 JavaScript 库。在使用(并且喜欢)jQuery 1.3's "Live" events 之后,我更喜欢下一个库,我尝试将事件委托内置到事件系统中。 Wikipedia's JS Library Comparison 在这里工作。

看起来像MooTools is getting it in 2.0。其他人呢?

我正在制作这个社区维基。请帮我填写清单。

原型:无

jQuery:从 1.3 开始

MooTools:自 2.0 起

ExtJS:是的

【问题讨论】:

    标签: javascript event-delegation


    【解决方案1】:

    事件委托比您想象的要容易。

    如果我找到一个没有自动事件委托的库,我只需为其添加一个层。

    【讨论】:

    • 好的。那么哪些库没有事件委托呢? :-)
    【解决方案2】:

    我建议调查Prototype。它在 SO 上的列出频率与 jQuery 一样高,我将它用作我所有项目的 JS 库。

    我不相信它内置了委托,但它是一个功能齐全的库,具有根据需要添加委托的所有必要功能。

    【讨论】:

    • 我将在图表中列出带有“否”的原型。
    【解决方案3】:

    如果您喜欢使用 Jquery 但又想尝试不同的东西,我会使用 mootools,指向 Aarons 事件委托插件的链接以及他关于如何使用原始插件的教程应该可以满足您的所有需求。有很多关于哪一个更好的讨论,这正是你喜欢的。

    Mootools 非常棒,并且有一些很好的插件,你还应该看看 David Walsh,他做了很多 mootools 开发和一些 Jquery。他发布了一些有趣的东西。 http://davidwalsh.name

    【讨论】:

    • 我会在 2.0 推出后立即试用 MooTools,我认为这很快。
    【解决方案4】:

    事件委托只是将事件处理程序挂在 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 中。库只是添加糖。

    【讨论】:

    • 我正在编制一份添加糖的清单。
    • 是的。但是,我认为尝试在 Prototype 中重新实现现场直播会很有趣,看看它有多容易。事实证明,很容易。
    【解决方案5】:

    Ext Js 我一直相信。

    【讨论】:

    • 确实如此。 Ext 还在其许多小部件中内置了事件委托,例如,用于处理拖放和其他事件密集型交互以最大限度地提高性能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    相关资源
    最近更新 更多