Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 如何触发对复选框的更改或单击行以选择表行?_Javascript_Jquery_Events_Checkbox_Html Table - Fatal编程技术网

Javascript 如何触发对复选框的更改或单击行以选择表行?

Javascript 如何触发对复选框的更改或单击行以选择表行?,javascript,jquery,events,checkbox,html-table,Javascript,Jquery,Events,Checkbox,Html Table,我有一个表格,第一列有复选框 可以通过(a)选中复选框或(b)单击行来选择行。选定的行应高亮显示 我的问题是,我可以让任何一个单独工作,但不能两者同时工作。以下是我所拥有的: // click on row $('table tbody tr').click( function() { $(this).find( "th input:checkbox").trigger('change'); // $(this).find( "th input:checkbox"

我有一个表格,第一列有复选框

可以通过(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上的点击路由到checkbox change处理程序中,因此只有一个地方可以检查所选行并处理类的添加/删除


但是我不能让它工作。上面的内容不知何故创建了一个无休止的循环,我不知道如何让它正常工作。

如果一行上有一个侦听器,而该行中的复选框上有另一个侦听器,那么当您单击复选框时,这两个侦听器都将被触发,除非您停止事件传播。i、 e.点击复选框也是点击tr

通常您会使用
event.stopPropagation()
但不能在
live()
方法上使用此选项,因为事件将已传播

在您的情况下,如果您可以从使用
live
更改为使用
单击
,则可以使用:

event.stopPropagation();

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

ah。你是对的。单击复选框也会单击该行。这是我的循环。好啊谢谢我会想办法解决的。