2016-09-20 24 views
-1

我需要隱藏其td元素不包含兩個類中的任何一個的特定表中的所有行。如果​​元素沒有兩個類中的任何一個,我將如何隱藏表格行?

如果一行中至少有一個td元素包含這兩個類中的一個,那麼不要隱藏它。否則,隱藏整行。

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

任何想法?

+1

請提供表格的標記,包括應隱藏的行示例和不應隱藏的行。另外,你已經嘗試過了什麼? – MJH

回答

0

沒有一個例子是很難知道你在尋找什麼,但也許會有這樣的工作(空氣代碼):

$('#mytable tr').each(function() { 
    var count = $('td.class1, td.class2', $(this)).length; 
    if (!count) { 
     $(this).hide(); 
    } 
}); 
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/


更新:更新了我的答案,你想隱藏那些沒有班級,不是那種班級。

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(); 
    } 
    }); 
}); 
相關問題