2017-09-11 59 views
0

我正在閱讀關於授權事件的文章https://learn.jquery.com/events/event-delegation/http://api.jquery.com/on/。我正在研究的語法如下:如果jQuery .on()只接收兩個參數,可以實現事件委託嗎?

.on(events [, selector ] [, data ], handler) 

爲了實現事件的代表團,在上面的語法中的可選[, selector ]必須使用,是否正確?例如,這不會是實現事件代表團(注意。對()如何只接收兩個參數):

// Attach a directly bound event handler 
$("#list a").on("click", function(event) { 
    event.preventDefault(); 
    console.log($(this).text()); 
}); 

這是實現事件代表團(注意。對()如何接受兩個以上參數) :

// Attach a delegated event handler 
$("#list").on("click", "a", function(event) { 
    event.preventDefault(); 
    console.log($(this).text()); 
}); 

如果jQuery .on()只接收兩個參數,是否可以實現事件委託?我的印象是,這是不可能的,但我想要一個確認。謝謝。

+1

要被視爲「委託」,事件處理程序必須提供「選擇器」參數。 – DFriend

回答

1

技術上可以。可選的選擇器參數將在場景後面針對事件目標進行檢查,並且只有在匹配時才執行處理函數。沒有什麼阻止你寫自己的代表團。例如:

$("#list").on("click", function(event) { 
    event.preventDefault(); 
    if(event.target.nodeName === a) { 
     console.log($(this).text()); 
    } 
}); 

但是,這可能是毫無意義的,您的理解大多是正確的。