如果表元素的元素没有两个类中的哪一个,我怎么能隐藏它?

时间:2016-09-20 21:54:01

标签: jquery

我需要隐藏特定表中的所有行,这些行的td元素不包含两个类中的一个。

如果一行中至少有一个td元素包含这两个类中的一个,则不要隐藏它。否则,隐藏整行。

class='class1'  
class='class2'  
id='mytable'

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

如果没有一个例子,很难确切地知道你在寻找什么,但也许这样的事情会起作用(航空代码):

$('#mytable tr').each(function() {
    var count = $('td.class1, td.class2', $(this)).length;
    if (!count) {
        $(this).hide();
    }
});

答案 1 :(得分:0)

你可以使用这种方法,也许它不是最短的方法,但希望可以明确遵循。在jQuery中查找find,hasClass,eq方法以了解更多信息。

var trs = $("table tr")

for( var i = 0; i < trs.length; i++) {
    var tds = $(trs.eq(i)).find("td");
  var trToKeep = true;
  for (var j = 0; j < tds.length; j++) {
    if (tds.eq(j).hasClass("x") || tds.eq(j).hasClass("y")){
        trToKeep = true;
      break;
    }
    else {
        trToKeep = false;
    }
  }
  if (trToKeep === false) {
  trs.eq(i).hide();
  } 
}

工作jsFiddle在这里(你要寻找的类是x或y):

https://jsfiddle.net/Turo/aj55q33w/

更新:更新了我的答案,因为您想要隐藏没有课程的课程,而不是那些课程。

答案 2 :(得分:0)

您可以遍历行并检查每个td的类。我循环并使用数组和标志来决定是显示还是隐藏。我也先隐藏所有内容,然后稍后通过状态检查向他们展示。

var classNames = ['red', 'green'];
$(document).ready(function() {
  $('table tbody tr').each(function() {
    var show = false;
    $(this).hide();
    $('td', this).each(function() {
      var tdClass = $(this).attr('class');
      if ($.inArray(tdClass, classNames) != -1) {
        show = true;
      }
    });
    if (show) {
      $(this).show();
    }
  });
});