2015-09-03 50 views
0

我正在将我们的一些代码库从jquery转换而来。直到我们遇到事件,一切都非常顺利。我们有很多带有jquery的命名空间代码,所以对于现在我们不会将trigger函数调用转换为jquery。但是,我们正在尝试使用js事件侦听器。这是问题的自定义事件:js事件监听器和jquery事件触发器不是朋友

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的监听器的代码,而不是听众。有谁知道为什么会发生这种情况?

+0

的可能重复的[为什么JQuery的不触发添加事件侦听?](http://stackoverflow.com/questions/14232448/why-jquery-doesnt-trigger-added-eventlistener) – JAAulde

回答

0

jQuery自定义事件旨在用于执行抽象和简化,或为一些事件提供更多的含义,只需调用点击

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

0

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

如果您使用window.dispatchEvent(new Event("testevent"))来触发真实事件,您会发现它们都可以工作。

-1

Similar question answered here

jQuery的事件比原生事件的水平。触发假冒 一个jQuery事件。

+0

当SO问题是另一个SO问题的一个骗局,该骗局应该关闭。回答说,这是一个愚蠢的连接到笨蛋变得混乱。 – JAAulde

+0

你如何关闭它? – Sachin

+0

如果您作为SO用户拥有足够的权限,则可以通过单击问题下方的“关闭”来添加投票结束。 – JAAulde