0

特定の値を含む'sが含まれているtr場合、クラスをに追加する必要があります。td

SOに関するこの質問への回答を使用して、解決策を見つけたと思いましたが、複数の列を含む行では機能しないようです。単一の列がある場合にのみ機能しますtd

他の列の中でも、特定の値を持つ列を含むテーブル行を特定するにはどうすればよいですか?列は常に特定の順序であるとは限らないため、動的な回答である必要があることに注意してください。

jsFiddle

<table>
    <tr>
        <td>Hey!</td>
        <td>Other column</td>
        <td>Yo!</td>
        <td>Other column2</td>        
    </tr>
</table>

<script type="text/javascript">
$('tr').each(function(){
 if (($(this).find('td').text() == 'Hey!' ) && ($(this).find('td').text() == 'Yo!' ))
 {
     alert('here');
     $(this).addClass('disabled');
 }
});
</script>
4

4 に答える 4

1

どうですか:

$('td:contains("Hey!"),td:contains("Yo!")').parent('tr').addClass('disabled');

または、両方が存在することを確認します

$('tr').each(function(){

    if($('td:contains("Hey!")').length > 0 && $('td:contains("Yo!")').length > 0)
        $(this).addClass('disabled');

});

</ p>

于 2012-05-16T15:39:38.413 に答える
1

他の人が述べているように、jQueryの:contains(text)セレクターを使用します。

$('tr').each(function(){
   if($('td:contains("Hey!")', this).length && $('td:contains("Yo!")', this).length){       
        alert('here');
        $(this).addClass('disabled');
    }
});

そんな感じ。

編集

lengthjQueryのsize()関数の代わりに使用するように私の答えを更新しました。length使用がより速いという概念を支持する証拠を投稿した人々への称賛。私自身のいくつかの基礎研究を行った後、jQueryドキュメントでこれに出くわしました:

.size()メソッドは、機能的には.lengthプロパティと同等です。ただし、.lengthプロパティは、関数呼び出しのオーバーヘッドがないため、推奨されます。

それと、以下のテストケースを考えると、私は売られています。なぜsize()存在するのだろうか?私の考えでは、jQueryによって返される一部のオブジェクトは配列ではなく、配列のように動作するだけであるため、使用することsize()が望ましいと考えました。少なくとも後者はそうではないようです。

乾杯

于 2012-05-16T15:40:42.760 に答える
0

包含セレクターを使用する

$("td:contains('Hey!'), td:contains('Yo!')").each(function(){
   alert('here');
   $(this).parent().addClass('disabled');
});
于 2012-05-16T15:39:39.577 に答える
0

これは1つの解決策です:

var search = ["Hey!", "Yo!"];

$("tr").filter(function() {
    var found = 0;
    $(this).children().each(function() {
        var text = $(this).text();
        for (var i = 0; i < search.length; i++) {
            if (text == search[i]) found++;
        }
    });
    return found == search.length;
}).addClass("disabled");​

デモ:http: //jsfiddle.net/Tnq9A/1/


テキストの完全な一致ではなく部分的な一致が必要な場合は、次の比較方法を使用できます。

if (text.indexOf(search[i]) != -1) found++;

デモ:http: //jsfiddle.net/Tnq9A/2/

于 2012-05-16T15:45:38.037 に答える