0

これは機能しますが、2 行ごとにすべてのセルの上部境界線も非表示にします。各テーブルの最初の行が非表示になっている場合にのみ、上部の境界線を非表示にします。そうでなければ、何も隠すべきではありません。

このページには 4 つのテーブルがあります。

var validate = $("tr:nth-child(1)");

if (validate.is(":hidden")) {
    $("tr:nth-child(2) td").css("border-top-width", "0px");
}

以下に例を示します: http://jsfiddle.net/nBAgv/

4

3 に答える 3

0

私はこれを正しく理解していると思います。わからない。非表示のすべての行を追加する次の行では、その行の各データ セルから上の境界線を削除します。

その場合は、代わりにこのようにしてみてください

$('table').each(function() {  
    $(this).find('tr').each(function() { 

        validate = $(this);

        if (validate.is(":hidden")) {
            $(validate).parent().find("tr:eq(1) td").css("border-top", "0px");
        } 
    });
});

テーブルごとに行を見つけます。次に、各行について、それらが非表示になっているかどうかを確認します。次の最初の行が見つかった場合は、その境界線を削除します。

これが私のフィドルです。

于 2013-08-17T15:55:50.220 に答える
0

試す

$('table').each(function(){
    var validate = $("tr:nth-child(1)", this);

    if (validate.is(":hidden")) {
        $("tr:nth-child(2) td", this).css("border-top-width", "0px");
    }
})
于 2013-08-17T15:29:50.610 に答える
0

問題は、最後から 2 番目の行がセレクター tr:nth-child(2) に一致するすべてのテーブル行にその属性を設定することです。これはすべてのテーブルの 2 番目の行です。

したがって、よりコンテキストを意識したアプローチが必要です。以下はテストしていませんが (動作するはずです)、コンセプトは有効です。非表示の 1 行目の親テーブルを取得し、.css("border-top-width","0px") をそのテーブルの 2 行目にのみ適用する必要があります。

$("tr:first-child").each(
     function(e) {
         if($(e).is(":hidden")) {
            $(e).parent().children("tr:nth-child(2)").css("border-top","0");
         }
     });
于 2013-08-17T15:35:24.780 に答える