2015-04-21 152 views
1

使用jQuery转到任何页面。打开控制台。键入以下命令:.trigger()不会触发自定义事件

monitorEvents(document); 

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

现在键入:

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

您应该看到click事件在控制台中显示出来(从monitorEvents)

现在试试这个命令:

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

事件确实现在出现在控制台中。至少对我来说不是。

看来如果我使用触发器来触发正常的事件,它可以工作,但对于自定义事件,它不会被触发。为什么?

+1

jQuery的内部实现自定义事件,而不是通过浏览器的事件事件处理机制。 – Barmar

回答

-1

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

1

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

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

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

现在$('body').trigger('whatever');将工作。


如果您想深入到一些香草的JavaScript这里是事件的文档:https://developer.mozilla.org/en-US/docs/Web/API/Event