【问题标题】:Difference between addEventListener and jQuery on?addEventListener 和 jQuery on 的区别?
【发布时间】:2014-05-12 16:44:44
【问题描述】:

我正在尝试捕获页面上的所有点击事件。

我可以用这个:

window.addEventListener('click', function(e){
    console.log(e.target);

}, true);

$("*").delegate("*", "click", function(e){
    if (e.target === this) {
        console.log(e.target);
    }
});

有什么区别?

【问题讨论】:

标签: jquery events dom-events


【解决方案1】:

实际上有几个不同之处:

  1. 您不能对 jQuery .on() 使用捕获,这样的事情根本不存在。 jQuery 只支持事件冒泡。但是,您可以使用 .addEventListener()

  2. 指定是在捕获阶段还是在冒泡阶段捕获事件
  3. jQuery .on() 允许您为多个事件附加相同的事件侦听器,而 .addEventListener 仅允许您一次将事件侦听器添加到单个事件类型(尽管您可以使用类似

    ["event type 1", "event type 2"].forEach( function(i){ 
            element.addEventListener(i, function(){} ); 
    })
    

    但那很混乱)

  4. 也许您会认为 .on() 和 .addEventListener() 都将事件侦听器添加到事件目标;它不是那么简单,至少对于 jQuery 来说不是。更多关于这一点,请有人补充细节,因为我也不是很清楚:P

  5. 使用 .on() 附加的事件侦听器可以通过调用另一个 jQuery 函数 .trigger() 来调用,但使用 .addEventListener() 附加的事件侦听器将响应.trigger()

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2012-09-09
    • 1970-01-01
    • 2012-02-18
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多