2013-01-24 18 views
19

Sto provando a cambiare qualsiasi elemento contenente una particolare stringa di testo su un colore rosso. Nel mio esempio posso ottenere che gli elementi figlio diventino blu, ma c'è qualcosa nel modo in cui ho scritto la riga "Sostituisci" che è errata; il cambio di colore rosso non avviene. Prendo atto che il metodo "contiene" viene solitamente scritto come :contains ma non è stato possibile ottenerlo per convalidare con $(this).jQuery se "questo" contiene

$('#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/

risposta

58

:contains è un selettore. Per verificare se un selettore applica a data variabile, è possibile utilizzare is:

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

Tuttavia la soluzione di Vega è più pulita in questo caso.

+0

grazie necessario per $ (questo) +1 –

+1

Questo è perfetto per l'elaborazione delle istruzioni condizionale. Grazie – blackhawk

+0

funziona splendidamente quando si utilizza una variabile jQuery, come '$ bodyText = $ ('div.bodyText ul li p');' quindi può essere utilizzato come 'if ($ bodyText.is (': contiene (" del testo ") '))'. Apprezzalo. – j4v1

16

Io non credo che ci sia una funzione .contains in jQuery. Esiste una funzione .contains ma tale funzione viene utilizzata per verificare se un elemento DOM è un discendente di un altro elemento DOM. See documentation for .contains. (Credits a @beezir)

Penso che si sta cercando :contains selettore. Vedi di seguito per maggiori dettagli,

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

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

11

è possibile utilizzare match per trovare il testo all'interno dell'elemento particolare

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

questo funziona vedono Updated Fiddle

+0

Questo mi ha aiutato. Simile a VB.net ".contains()" – CrazyPaste

+0

Funziona senza distinzione tra maiuscole e minuscole –

4

Credo che dovremmo convertire il nostro testo in minuscolo. È meglio controllare con lettere minuscole e maiuscole.

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

Proprio ciò di cui avevo bisogno. Stavo cercando di far funzionare la partita prima con una variabile, e questo mi ha aiutato. grazie. – lharby