4

td に text2 が含まれていない場合、tr を非表示にします。このコードを使用している場合:

$('td:contains("text2")').parent().toggle()}))

td に text2 を含む tr を非表示にしますが、 td に text2 を含まないすべてのテーブル行を非表示にしたいので、次のコードを書きました。

$('td:not(:contains("text2"))').parent().toggle()}))

ただし、すべての行を非表示にします。

jsfiddle の例

4

4 に答える 4

6

現在の問題は、 atdが含まれていない場合、兄弟にテキストが含まれているtext2かどうかに関係なく、行全体が非表示になることです。td

マークアップを変更せずに、私が考えることができる最善の方法は、td各行の最初の行を選択してから、親でフィルター処理することtrです。

$('td:first-child').parent('tr:not(:contains("text2"))').toggle();

または、要素trを持つものを省略して、 で直接フィルタリングすることもできます(これにより、含む行が非表示にならなくなります)。thth's

$('tr:not(:has(th)):not(:contains("text2"))').toggle();

ここにフィドルがあります

于 2013-10-16T13:56:30.007 に答える
0

いずれかの列に text2 が含まれていない場合、行が非表示になるため、機能していません。

以下を使用できますが、条件が任意の列の場合、ヘッダーと他の行を区別する必要があります。

contains()任意の子孫に対して機能するため、tr の状態を直接確認できます

$('tr:not(.head):not(:contains("text2"))').toggle()

これが更新されたJSFiddle です

于 2013-10-16T13:51:23.543 に答える
0

これを試して:

$(document).ready(function(){
    $('#contains').change( function() {
        $('td:contains("text2")').parent().toggle()
    });

    $('#notContains').change( function() {
        $('td').parent().toggle();
        $('td:contains("text2")').parent().toggle();
    });
});
于 2013-10-16T13:53:23.330 に答える
-1

このコードで変更:

Uは良いですが、最初はUが要素を見つけなければならないので、findを使用してください...

親:

一致する要素の現在のセット内の各要素の親を取得します。オプションでセレクターによってフィルター処理されます。

探す:

セレクター、jQuery オブジェクト、または要素によってフィルター処理された、一致する要素の現在のセット内の各要素の子孫を取得します。

したがって、このコードで変更します

td を隠します text2:

     $(document).find('td:contains("text2")').toggle()}));

text2 なしで td を非表示にします。

     $(document).find('td:not(:contains("text2"))').toggle()}));

コードはこちら

$(document).ready( 
$('#contains').change( function() {
    $(document).find('td:contains("text2")').toggle()}));
 $(document).ready( 
 $('#notContains').change( function() {

  $(document).find('td:not(:contains("text2"))').toggle()}));

デモ

ありがとう、相棒

于 2013-10-16T14:22:55.310 に答える