为表jQuery的所有行运行代码

时间:2011-06-08 11:50:21

标签: jquery jquery-selectors

我正在使用此代码在条件的第六列中隐藏元素(我的意思是如果表的span第四列的文本是“0”)。
但是这段代码适用于第一行表格 如何为目标表的所有行执行此功能?

if ($('#table  tr  td:eq(4) > span').text() == "0") {
            $('#table  tr  td:eq(6) > .PrintReport').hide();
        }

5 个答案:

答案 0 :(得分:4)

如果您可以发布tr的完整HTML结构,那么您将获得更优化的解决方案。查看现有代码,您可以执行以下操作:

$('#table tr').each(function() {
  var text = $('td:eq(4) > span', this).text();

  $('td:eq(6) > .PrintReport', this).toggle(text != '0');
});

请注意,在循环内部我使用this作为选择器中的上下文。

编辑:解释上面的一些代码 -

  //This runs the selector in the context of 'this' (the table row)
  //It is functionally equivalent to $(this).find('td:eq(6) > .PrintReport')
  $('td:eq(6) > .PrintReport', this)

  //This will .show() it if the expression evaluates to true
  //and hide if false
  .toggle(text != '0')

答案 1 :(得分:2)

$('#table tr').each(function() {  
     var text = $('td:eq(4) > span', this).text();   
     if(text=='0')   
     $('td:eq(6)').find('+.PrintReport').hide();
    });

答案 2 :(得分:2)

$('table tr').filter(function () {
    return $('td:eq(4) > span', this).text() == "0";
}).find('td:eq(6) > .PrintReport').hide();

更新:如果您正在寻找第4和第6列(在人为测量中),您必须分别使用3和5作为:eq,因为它适用于0索引。我离开了我的榜样,只是想发出这个警告。

我还添加了一个工作演示: jsFiddle Demo

答案 3 :(得分:1)

要运行,但这应该有效:http://jsfiddle.net/thomas4g/aAQNC/4/ 用.each ...

遍历每一行
 $("#table tr").each(function() {
      $(this).children("td:eq(6) > .PrintReport").hide();
      });

答案 4 :(得分:1)

我认为你应该使用each()来为每一行工作。请尝试这个(只是动态编写而未经测试):

$('#table  tr  td:eq(4) > span').each(function(){
  if ($(this).html() == "0") {
            $(this).closest("tr").find('.PrintReport').hide();
        }
});