.trigger()不会触发自定义事件

时间:2015-04-21 19:05:59

标签: jquery javascript-events

使用jQuery转到任何页面。打开控制台。输入以下命令:

monitorEvents(document);

这将显示文档看到的所有事件。如果您在页面上移动鼠标,您将看到mousemove事件。

现在输入:

$("body").trigger("click");

您应该会在控制台中看到click事件(来自monitorEvents)

现在尝试这个命令:

$("body").trigger("custom");

该事件现在显示在控制台中。对我来说至少它没有。

似乎我使用触发器来触发正常事件,它可以工作,但对于自定义事件,它不会被引发。为什么呢?

2 个答案:

答案 0 :(得分:1)

出于几乎相同的原因,$('body').trigger('mouseup');没有显示任何内容;该特定事件没有事件监听器。

您需要先附加事件侦听器。 jQuery构造自己的事件对象类型。

$('body').on('whatever', function (e) {
  window.console.log(e);
});

现在$('body').trigger('whatever');可以使用。


如果您想在此处浏览一些vanilla JavaScript,请参阅事件文档:https://developer.mozilla.org/en-US/docs/Web/API/Event

答案 1 :(得分:-1)

您可能只需先construct an event。尝试: var customEvent = new Event("custom");