繁体   English   中英

动态创建复选框单击事件选择整行,而不是仅选择jquery数据表中的复选框。 这是为什么?

[英]Dynamically created checkbox click event selecting the whole row instead of only the check box in a jquery datatable. Why is that?

我在我的jquery数据表中添加了一个新行,其中html内容(复选框输入)在某些事件上:

$("#btn").on( 'click', function (){
    $('#mytable').DataTable().row.add([data[0],data[1],"<td><input type=\"checkbox\" value=\"\" /></td>"]).draw();
}

现在,当我从动态创建的行中单击“复选框”时,整个行将与复选框一起触发。 因此,下面甚至没有被触发:

$('input[type=checkbox]').on( 'click', function (e){
    e.stopPropagation();
});

但反过来会触发此事件:

$("#mytable tbody").on( 'click', 'tr', function (){
   $(this).addClass('selected').siblings().removeClass('selected');
 ....
}

知道为什么会这样吗?

您无法在委托事件处理程序上停止传播,因为它在处理之前已经通过DOM传播。

或者,您可以在tr单击处理程序中检查event.target ,如果是单击的复选框,则不执行任何操作:

$("#mytable tbody").on('click', 'tr', function(e) {
    if (e.target.tagName.toLowerCase() == 'input')
        return;

    $(this).addClass('selected').siblings().removeClass('selected');
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM