Javascript jQuery事件冒泡:如何捕获嵌套的单击?
我在以下位置捕获对任何给定LI的点击:Javascript jQuery事件冒泡:如何捕获嵌套的单击?,javascript,jquery,events,Javascript,Jquery,Events,我在以下位置捕获对任何给定LI的点击: <ul> <li class="opt">Text 1</li> <li class="opt">Text 2</li> </ul> 但是,我还需要支持嵌套块元素存在于LI中的能力,而无需更改javascript代码。在本例中,单击文本1时不会触发上述javascript: <ul> <li class="opt"> &
<ul>
<li class="opt">Text 1</li>
<li class="opt">Text 2</li>
</ul>
但是,我还需要支持嵌套块元素存在于LI中的能力,而无需更改javascript代码。在本例中,单击文本1时不会触发上述javascript:
<ul>
<li class="opt">
<div>
<div>
<span>Text 1</span>
</div>
</div>
</li>
</ul>
-
文本1
我已经读到jQuery事件通过DOM“冒泡”,但不幸的是,这里没有发生这种冒泡。当我不确定LI中可能包含哪些其他元素时,捕获LI中单击事件的最干净方法是什么?您需要在该类选择器上添加一个点,然后它应该可以工作:
$('.opt').live('click', function(event) {
console.log("Click!");
}
除非您正在执行一些异常操作(例如,对单击的子项执行
.stopPropogation()
),否则事件应该会自动冒泡。这不是一个好主意,您将多次触发该事件,每个嵌套元素触发1次。我的错——我的代码中有点,但在翻译过程中丢失了它。即便如此,我的活动似乎也没有向上激发几层。@Tom-在所有测试中都激发得很好……还有其他事情在进行,你有我可以看的测试页面吗?哦,天哪,这是一个脸掌时刻吗。事件很快就冒出来了——是我对event.target点的位置的错误解释导致了我的代码停止。但这并不是完全浪费时间,因为如果没有你的评论,我就不会发现这个错误。谢谢你,尼克@汤姆——这种情况每周至少发生三次:)很高兴你让它工作起来了@汤姆弗罗斯特:为了节省偶尔读者的时间,你可能想编辑原始帖子;在目前的状态下,它没有提到真正的问题,人们不仅要阅读选定的答案,还要阅读它的评论,以便理解问题与标题或帖子毫不相关!
$('.opt, .opt *').live('click', function(event) {
console.log("Click!");
}
$('.opt, .opt *').live('click', function(event) {
console.log("Click!");
}