给出一个像这样的简化文档:
<div id="outerDiv">
<div id="innerDiv">
<input id="theInput" />
</div>
</div>
字符串
如果我点击#theInput
,点击事件将冒泡到#innerDiv
,然后是#outerDiv
。我想做的是在#outerDiv
上放置一个处理程序来监听这些点击,然后检查'bubble-chain'以查看哪些元素以前收到过相同的点击事件。
例如,单击#outerDiv
中的处理程序#theInput
将给予[#outerDiv, #innerDiv, #theInput]
。如果单击#theInput
外部但仍在#innerDiv
内部,则结果将是[#outerDiv, #innerDiv]
- 需要说明的是,实际的文档并不像这样简单,在每个级别上可能有任意数量的子元素或兄弟元素。另外,当我引用
#theInput
时,我指的是元素本身,也就是说,我不是在寻找ID数组。最后,考虑到可能有任意数量的元素,我希望避免为中间元素添加额外的处理程序。*
jQuery在我家很受欢迎。
4条答案
按热度按时间blmhpbnm1#
似乎是:
字符串
这就是你所需要的,特别是如果你使用jQuery,你的事件处理程序将把
this
绑定到与处理程序代码相关的元素。来自目标的父元素列表将告诉你所有事件可能冒泡的元素,你的this
引用将是该列表中的一个元素。(我 * 认为 * 父元素列表是按照“从内到外”的顺序排列的,但我必须检查一下)。因此,您可以分辨出哪些元素已经被“访问”,哪些还没有。mu0hgdu02#
使用event对象,使用target找出click元素。从那里您可以使用jQuery中的parents()函数来查找链中的所有父元素。
字符串
7ajki6be3#
字符串
fkvaft9z4#
使用vanilla JS
字符串