gpt4 book ai didi

javascript - 如何触发复选框上的更改或单击一行以选择表格行?

转载 作者:行者123 更新时间:2023-11-30 18:31:54 25 4
gpt4 key购买 nike

我有一张表,第一列有复选框。

可以通过 (a) 选中复选框或 (b) 单击行来选择行。应突出显示选定的行。

我的问题是我可以让任何一个单独工作,但不能同时工作。这是我所拥有的:

 // click on row      
$('table tbody tr').click( function() {
$(this).find( "th input:checkbox").trigger('change');
// $(this).find( "th input:checkbox").trigger('click');
});

// change listener
$('.tr input:checkbox').live( "change", function () {
console.log("change triggered");

var row = $(this).closest('tr');

if ( $(this).attr('checked') == "checked" ) {
row.addClass( 'ui-btn-hover-c' ).removeClass( 'row_selected ui-btn-up-e' )
} else {
row.addClass('row_selected ui-btn-hover-e' ).removeClass( "ui-btn-up-c");
}
});

我想我只是将 TR 上的点击路由到复选框更改处理程序中,所以只有一个地方检查选定的行并处理类添加/删除。

但是我无法让它工作。上面以某种方式创建了一个无限循环,我不知道如何让它正常工作。

最佳答案

如果您在一行上有一个监听器,并且在该行内的复选框上有另一个监听器,那么除非您停止事件传播,否则当您单击该复选框时,这两个都将被触发。即点击复选框也是点击 tr。

通常您会使用 event.stopPropagation(); 但您不能在 live() 方法上使用它,因为事件已经传播。

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

在您的情况下,如果您可以从使用 live 更改为使用 click,那么您可以使用:

event.stopPropagation();

防止点击复选框触发点击表格行。

关于javascript - 如何触发复选框上的更改或单击一行以选择表格行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com