js事件监听器& jquery事件触发器不是朋友

时间:2015-09-03 19:58:42

标签: javascript jquery javascript-events

我正在努力将一些代码库转换为jquery。直到我们参加活动,一切都进展顺利。我们有很多带有jquery的命名空间代码,因此对于 now ,我们不会将trigger函数调用从jquery转换出来。但是,我们正在尝试使用js事件侦听器。以下是自定义事件的问题:

window.addEventListener("testevent", function(e){
 console.log("js fired"); // this doesn't log, but it should!
});

$(window).on("testevent", function(e){
 console.log("jquery listener fired"); // this logs fine, like it should
});

// trigger the custom event with jQuery
$(window).trigger("testevent");

如果我在控制台中运行上面的代码,我会得到jquery监听器的日志,但不是监听器。有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:0)

jQuery自定义事件旨在用于执行抽象和简化,或者为一些名为 click 的事件提供更多意义。

此外,这些自定义事件由jQuery触发,只能由less监听。 DOM事件监听器将监听DOM事件(即由W3C标准定义的事件)。

答案 1 :(得分:0)

根据documentation.trigger()执行具有相应事件的任何事件处理程序。它还说.trigger()只模拟一个事件,并不能完美地复制一个自然发生的事件。

如果您使用window.dispatchEvent(new Event("testevent"))来发起真实事件,您会发现它们都有效。

答案 2 :(得分:-1)

Similar question answered here

  

jQuery事件比本机事件高一级。触发假货   一个jQuery事件。