26

特定のテキスト文字列を含む要素を赤色に変更しようとしています。私の例では、子要素を青くすることができますが、'Replace Me' 行の書き方に誤りがあります。赤い色の変化は起こりません。「含む」メソッドは通常次のように記述されていることに注意して:containsください$(this)

$('#main-content-panel .entry').each(function() {
       $(this).css('color', 'blue');      
});         

$('#main-content-panel .entry').each(function() {
   if($(this).contains("Replace Me").length > 0) {
        $(this).css('color', 'red'); 
    }      
});

フィドル: http://jsfiddle.net/zatHH/

4

4 に答える 4

82

:containsセレクターです。セレクターが特定の変数に適用されるかどうかを確認するには、次を使用できますis

if($(this).is(':contains("Replace Me")')) 

ただし、この場合、ベガのソリューションはよりクリーンです。

于 2013-01-24T20:41:16.410 に答える
18

.containsjQueryには機能がないと思います。関数があり.containsますが、その関数は、DOM 要素が別の DOM 要素の子孫であるかどうかを確認するために使用されます。.contains のドキュメントを参照してください。@beezirへのクレジット)

:containsセレクターを探していると思います。詳細については、以下を参照してください。

$('#main-content-panel .entry:contains("Replace Me")').css('color', 'red');

http://jsfiddle.net/zatHH/1/

于 2013-01-24T20:39:02.393 に答える
14

match特定の要素内のテキストを見つけるために使用できます

$('#main-content-panel .entry').each(function() {
    $(this).css('color', 'blue');      
});			

$('#main-content-panel .entry').each(function() {
    if($(this).text().match('Replace Me')) {
        $(this).css('color', 'red'); 
    }      
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="main-content-panel">
    <div class="entry">ABC</div>
    <div class="entry">ABC Replace Me</div>
    <div class="entry">ABC</div>
    <div class="entry">ABC Replace Me</div>
</div>

于 2013-01-24T20:48:05.307 に答える
5

テキストを小文字に変換する必要があると思います。小文字と大文字で確認した方が良いです。

$('#main-content-panel .entry').each(function() {
    var ourText = $(this).text().toLowerCase(); // convert text to Lowercase
    if(ourText.match('replace me')) {
        $(this).css('color', 'red'); 
    }      
});
于 2014-01-22T07:30:56.897 に答える