当元素相互包含时,如何获得jquery的onClick事件

how to get jquery onClick event on elements when they contain eachother

本文关键字:jquery 何获得 onClick 事件 元素 包含时      更新时间:2023-09-26

我有一个包含表格的div

<div id="container">
<table id="data">
<tbody>
......
......
</table>
</div>

我已经将onclick事件绑定到表行上,这样如果用户单击一行,它就会高亮显示

$("#data tr").mouseup(function() {
        $("tr.selected").removeClass("selected");// Deselect currently selected rows
        $(this).addClass("selected");       
        });

现在,如果用户单击表外的某个位置,我想取消选择该行。问题是,如果我绑定点击事件与div,表和div得到回调…如何才能只获得div的回调?这样我就可以取消选择行!!我甚至尝试绑定onClick与body元素,但它似乎如果你绑定一个事件与一个元素,它里面的所有元素将得到回调。如果是这种情况,我如何取消选择行,然后如果用户点击表的边界以外。

这是由嵌套元素冒泡引起的。你可以使用

来阻止它
$("div").click(function(e) {

            if($(this).attr('id')=="data")
            {
                e.stopPropagation();
                return;
            }

                $(".selected").removeClass("selected");
        });
        $("#data tr").mouseup(function() {

        $("tr.selected").removeClass("selected");// Deselect currently selected rows
        $(this).addClass("selected");       
        }); 

从:http://api.jquery.com/event.stopPropagation