2015-04-21 204 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