我正在努力将一些代码库转换为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监听器的日志,但不是监听器。有谁知道为什么会这样?
答案 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事件。