我在很多我的JS腳本中使用事件委託。通常,我會做的是我將有一個全局事件處理程序,並且我將追蹤到接收事件的元素。 問題是我不能總是在安裝事件時使用jQuery的過濾選擇器。例如,如果你正在使用它:jQuery中的parentOrSelf([selector])
$('.todo').on('click', function(e) {
// The event target is guaranteed to be something having the
// class .todo
var todo = e.target;
});
那麼它是非常簡單的,
不過,我現在在骨幹鑑於事件委派玩,在那裏我可以安裝一個事件處理程序:
'click .todo' : 'someHandlerFunction'
問題在於處理程序函數我不能保證在右邊接收事件目標,但我可以改爲它的後代之一。也就是說,我是 獲取事件對象,但它的目標也可以是「.todo」類中某個元素的內部元素,由於冒泡。
理想情況下,我想有一個簡單的功能,將做到這一點:
$(document.body).on('click', function(evt) {
var interestingElementOrNull = jQuery(evt.target).parentOrSelf('.todo');
});
,但我不得不訴諸於事件目標首先做一個hasClass()
,然後(如果它不匹配)待辦事項parent()
致電。
有沒有更好的/標準的方法來做到這一點?
難道你不能只使用最接近的()來獲得父母或自我?它首先檢查當前元素,然後在樹中向上查找匹配。或者你只想要升一級? – 2013-03-19 19:32:53