我需要隱藏其td元素不包含兩個類中的任何一個的特定表中的所有行。如果元素沒有兩個類中的任何一個,我將如何隱藏表格行?
如果一行中至少有一個td元素包含這兩個類中的一個,那麼不要隱藏它。否則,隱藏整行。
class='class1'
class='class2'
id='mytable'
任何想法?
我需要隱藏其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();
}
});
});
請提供表格的標記,包括應隱藏的行示例和不應隱藏的行。另外,你已經嘗試過了什麼? – MJH