我需要隐藏特定表中的所有行,这些行的td元素不包含两个类中的一个。
如果一行中至少有一个td元素包含这两个类中的一个,则不要隐藏它。否则,隐藏整行。
class='class1'
class='class2'
id='mytable'
有什么想法吗?
答案 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();
}
});
});