2014-04-01 57 views
1

所以我試圖捕獲頁面上的所有點擊事件。addEventListener和jquery之間的區別?

我可以用這

window.addEventListener('click', function(e){ 
    console.log(e.target); 

}, true); 

$("*").delegate("*", "click", function(e){ 
    if (e.target === this) { 
     console.log(e.target); 
    } 
}); 

的區別是什麼?

+0

請參閱此: http://stackoverflow.com/questions/8996015/jquery-on-vs-javascript- addeventlistener – pj013

+0

'$('*')'會選擇樹中的每個DOM元素並調用'delegate'。它沒有任何意義......等價的jquery應該是'$(window).click(...)',但請注意,jQuery不支持事件捕獲,所以你不能有與你的第一個代碼完全等價的東西在jQuery中的示例。 – plalx

回答

0

有一對夫婦的差異實際上是:

  1. 不能使用捕捉jQuery的。對(),這樣的事情根本就不存在。 jQuery只支持事件冒泡。但是,您可以指定是使用.addEventListener()捕獲捕獲階段還是冒泡階段的事件。jQuery .on()允許您爲多個事件附加相同的事件偵聽器,而.addEventListener只允許您事件監聽一次添加到一個單一的事件類型(雖然你可以使用類似

    ["event type 1", "event type 2"].forEach(function(i){ 
         element.addEventListener(i, function(){}); 
    }) 
    

    但這是相當混亂)

  2. 也許你會認爲這兩種。對()和閱讀進度()將事件偵聽器添加到事件目標;這並不那麼簡單,至少不適用於jQuery。更重要的是,請加上詳細信息,因爲我還不是很清楚:P

  3. 使用.on()附加的事件偵聽器可以通過調用另一個jQuery函數.trigger()來調用,但事件)通過閱讀進度(附聽衆將來響應.trigger()