使用addEventListener()添加的事件在被jQuery触发时不会被触发

时间:2014-09-29 23:49:09

标签: javascript jquery

鉴于这一小段代码:

window.addEventListener("test_event", function(e){
    console.log("event fired");
}, false);

console.log("init");

$(window).trigger("test_event");

为什么不触发事件? jQuery是否在标准事件处理程序错过的幕后做某事?

http://jsfiddle.net/Dygerati/zx36aapj/1/

1 个答案:

答案 0 :(得分:1)

您要做的是发送自定义事件:https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

window.dispatchEvent(new Event("test_event"));

http://jsfiddle.net/zx36aapj/2/

或者 - 如果您无法修改触发事件的方式,则可以使用bind代替:

$(window).bind("test_event", function(e){
    console.log("event fired");
});

console.log("init");

$(window).trigger("test_event");

这里有一个链接:http://jsfiddle.net/zx36aapj/3/