使用复选框突出显示特定表

时间:2018-05-29 08:45:36

标签: javascript jquery

我在此链接上有示例表格和复选框。 https://jsfiddle.net/q8aub965/

在单击checkboxAll的示例中,所有表都会突出显示。我'喜欢只突出显示每个checkboxAll的特定表。表具有唯一的表ID。我怎样才能达到这个效果?表格都是一样的。复选框是php生成的。谢谢你的时间和帮助!

(注意:如果您可以提供没有复选框的解决方案,我也会对此开放)

示例复选框代码:

<form id="form1" name="form1" method="post" action="">
    <label>
        <input type="checkbox" name="SelectAll" class="all" />All (for table1)
    </label>
    <label>
        <input type="checkbox" name="2" class="selector" />2
    </label>
    <label>
        <input type="checkbox" name="7" class="selector" />7
    </label>
    <label>
        <input type="checkbox" name="7" class="selector" />7
    </label>
</form>

1 个答案:

答案 0 :(得分:1)

更改您的功能,使其接受3个参数:

  • 检查状态
  • 要检查的值
  • table id

最后一个可以是可选的。然后你改变你的jQuery只访问表(如果有的话)并用给定的值更改单元格。

function foo(check, value, table){
  if(table && table != ''){
    table = '#'+table;
  }else{
    table = 'table';
  }

  $(table+' td').each(function(i,e){
    if(($(e).html() == value || '' == value) && check){
      $(e).addClass('highlight');
    }else{
      $(e).removeClass('highlight');
    }
  });
}

使用此功能,您可以为每个复选框指定正确的函数调用:

foo(true, '2', 'tb1'); //  select all calls with '2' in table 'tb1'
foo(true, '2'); //  select all calls with '2' in all tables
foo(false, '1', 'tb2'); // deleslect all cells in table 'tb2'

只需将以下内容添加到您的html代码中:

<div>
  <form id="form1" name="form1" method="post" action="">
    <label>
            <input type="checkbox" name="SelectAll" onclick="foo($(this).is(':checked'), '', 'tb1')" class="all" />All (for table1)</label>
    <label>
            <input type="checkbox" name="2" onclick="foo($(this).is(':checked'), '2', 'tb1')" class="selector" />2</label>
    <label>
            <input type="checkbox" name="7" onclick="foo($(this).is(':checked'), '7', 'tb1')" class="selector" />7</label>
    <label>
            <input type="checkbox" name="7" onclick="foo($(this).is(':checked'), '7', '')" class="selector" />7 in all Tables</label>

  </form>
  // and so on