2013-01-24 8 views
19

enthält Ich versuche, alle Elemente, die eine bestimmte Textzeichenfolge enthalten, in eine rote Farbe zu ändern. In meinem Beispiel kann ich die untergeordneten Elemente dazu bringen, blau zu werden, aber es gibt etwas über die Art, wie ich die "Replace Me" -Zeile geschrieben habe, die falsch ist. die rote Farbänderung passiert nicht. Ich bemerke, dass die "contains" -Methode normalerweise als :contains geschrieben wird, aber ich konnte das nicht mit $(this) validieren.jQuery, wenn "das"

$('#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'); 
    }  
}); 

Fiddle: http://jsfiddle.net/zatHH/

Antwort

58

:contains ein Selektor ist. Um zu überprüfen, ob ein Wähler auf bestimmte Variable gilt, können Sie is verwenden:

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

jedoch Vega Lösung Reiniger ist in diesem Fall.

+0

danke benötigt es für $ (this) +1 –

+1

Dies ist perfekt für bedingte Anweisung Verarbeitung. Danke – blackhawk

+0

Funktioniert prächtig, wenn man eine jquery-Variable verwendet, zB '$ bodyText = $ ('div.bodyText ul li p');' Dann kann es als 'if ($ bodyText.is (': contains (" ein Text) verwendet werden ") ')). Bin dankbar. – j4v1

16

Ich glaube nicht, gibt es eine .contains Funktion in jQuery. Es gibt eine .contains-Funktion, aber diese Funktion wird verwendet, um festzustellen, ob ein DOM-Element ein Nachkomme eines anderen DOM-Elements ist. See documentation for .contains. (Credits zu @beezir)

Ich denke, Sie suchen nach :contains Selektor. Siehe unten für weitere Details,

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

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

11

können Sie match verwenden Sie den Text innerhalb des bestimmten Elements

$('#main-content-panel .entry').each(function() { 
    if($(this).text().match('Replace Me')) { 
     $(this).css('color', 'red'); 
    }  
}); 

Diese Werke sehen Updated Fiddle

+0

Das hat mir geholfen. Ähnlich wie bei VB.net ".contains()" – CrazyPaste

+0

Funktioniert aber case insensitive –

4

Ich denke, finden wir unseren Text in Kleinbuchstaben umwandeln soll. Es ist besser, mit Klein- und Großbuchstaben zu prüfen.

$('#main-content-panel .entry').each(function() { 
    var ourText = $(this).text().toLowerCase(); // convert text to Lowercase 
    if(ourText.match('replace me')) { 
     $(this).css('color', 'red'); 
    }  
}); 
+0

Genau was ich brauchte. Ich habe versucht, früher mit einer Variablen zusammenzuarbeiten, und das hat mir geholfen. Danke. – lharby

Verwandte Themen