需要点击目标的最终父母

Gor*_*don 1 javascript jquery javascript-events

这是一个关于用jQuery绑定点击事件的问题,我正试图弄清楚.

假设我有一个块元素,我绑定了一个点击,里面有一个段落标记.

<div id="testClick" style="width:200px; height:100px'>
     <p>test click</p>
</div>
Run Code Online (Sandbox Code Playgroud)

然后我将一个点击绑定到div:

$('#testClick').bind('click', function(e){ 
    //with parent div (via e.target), do something 
});
Run Code Online (Sandbox Code Playgroud)

现在,如果我点击p标签内的文本,e.target = p元素,如果我点击div(周围,而不是文本)e.target = div元素.所以e.target =点击的对象 - 即事件也绑定到指定元素的任何子节点.

这是可以预料的,但我需要对父div进行操作.并且使用e.target不是获取div引用的可靠方法,因为依赖于div中的位置,e.target返回不同的元素.如果我使用e.target.parent来获取对div的引用,则在文本周围的div中发生单击时会失败.

有没有简单的方法让e.target始终只返回点击最初绑定的确切元素?

(例如,在actionScript中有一个属性"mouseChildren",可以防止事件在绑定元素的子节点上触发)

(考虑以上所有伪代码)

use*_*716 5

this 将引用处理程序绑定到的元素.

$('#testClick').bind('click', function(e){ 
    alert( this.id ); 
});
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/yX499/


发生的事情是,事件从最直接点击的元素一直到文档根目录.

如果它遇到一个元素,并且有一个处理程序绑定了发生的事件类型,它会调用该处理程序.

e.target将始终参照该深深嵌套的元件,但this将参考元件到该处理程序被束缚,因此,如果该事件发现2个元素与结合的方式到根目录的相应处理程序时,e.target不会在2个处理程序改变,但this会根据绑定元素不同.

  • @Gordon:FWIW,还有`event.currentTarget`,它总是给当前事件处理程序所属的元素. (2认同)