Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery事件冒泡:如何捕获嵌套的单击?_Javascript_Jquery_Events - Fatal编程技术网

Javascript jQuery事件冒泡:如何捕获嵌套的单击?

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"> &

我在以下位置捕获对任何给定LI的点击:

<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!");
}