我在很多我的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