4

我使用以下代码处理点击。

带输入的表

<table>
    <tr>
        <td>
            <input type="checkbox" />
        </td>
    </tr>
</table>​

点击处理程序

$('table tr').click(function(){
    alert('clicked');
});​

http://jsfiddle.net/n96eW/

它运行良好,但如果我在 td 中有一个复选框,它也会在单击时处理它。

有没有办法处理 TR 的点击但不触发子元素?

4

3 回答 3

15

http://jsfiddle.net/n96eW/1/

在您的复选框中添加另一个事件处理程序以停止传播:

$('table tr').click(function(){
    alert('clicked');
});

$('table tr input').click(function(e) {
    e.stopPropagation();
});
​
于 2012-04-10T10:04:17.883 回答
4

您可以检查event.target以过滤您的事件:

$('table tr').click(function(e){
    if(e.target.tagName.toLowerCase() != "input") {
        alert('clicked');
    }
});​
于 2012-04-10T10:05:39.230 回答
2

你也可以使用

$("tr").on('click',function() {

  if (!$(event.target).is('input'))
    alert('clicked');

});
于 2015-12-02T20:33:52.013 回答