2015-09-03 74 views
0

我正在將我們的一些代碼庫從jquery轉換而來。直到我們遇到事件,一切都非常順利。我們有很多帶有jquery的命名空間代碼,所以對於現在我們不會將trigger函數調用轉換爲jquery。但是,我們正在嘗試使用js事件偵聽器。這是問題的自定義事件:js事件監聽器和jquery事件觸發器不是朋友

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

的可能重複的[爲什麼JQuery的不觸發添加事件偵聽?](http://stackoverflow.com/questions/14232448/why-jquery-doesnt-trigger-added-eventlistener) – JAAulde

回答

0

jQuery自定義事件旨在用於執行抽象和簡化,或爲一些事件提供更多的含義,只需調用點擊

此外,這些自定義事件是由jQuery觸發的,只能由jQuery.on來監聽。 DOM事件監聽器將監聽DOM事件(即由W3C標準定義的事件)。

0

根據documentation.trigger()執行任何具有相應事件的事件處理程序。它還表示,.trigger()只模擬一個事件,並不能完美地複製自然發生的事件。

如果您使用window.dispatchEvent(new Event("testevent"))來觸發真實事件,您會發現它們都可以工作。

-1

Similar question answered here

jQuery的事件比原生事件的水平。觸發假冒 一個jQuery事件。

+0

當SO問題是另一個SO問題的一個騙局,該騙局應該關閉。回答說,這是一個愚蠢的連接到笨蛋變得混亂。 – JAAulde

+0

你如何關閉它? – Sachin

+0

如果您作爲SO用戶擁有足夠的權限,則可以通過單擊問題下方的「關閉」來添加投票結束。 – JAAulde