[英]How would I hide a table row if its <td> elements don't have one of two classes?
我需要隱藏特定表中的所有行,其 td 元素不包含兩個類之一。
如果一行中至少有一個 td 元素包含這兩個類之一,則不要隱藏它。 否則,隱藏整行。
class='class1'
class='class2'
id='mytable'
有任何想法嗎?
如果沒有示例,很難確切地知道您在尋找什么,但也許這樣的事情會起作用(空氣代碼):
$('#mytable tr').each(function() {
var count = $('td.class1, td.class2', $(this)).length;
if (!count) {
$(this).hide();
}
});
您可以使用這種方法,也許它不是最短的方法,但希望可以清楚地遵循。 在 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/
更新:更新了我的答案,因為您想隱藏沒有課程的課程,而不是有課程的課程。
您可以遍歷行並檢查每個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();
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.