2011-01-12 32 views
8

C'è qualche modo - qualsiasi selettore jQuery (non ho trovato nessuno su http://api.jquery.com/category/selectors/), che può essere usato come corrispondenza esatta?Selettore jQuery - Corrisponde al contenuto degli elementi

:contains() è quasi ciò di cui ho bisogno, ma non esattamente. ": contiene" le ricerche in ogni elemento regex come questo:

.*<query>.* 

Il che significa, se ho bisogno di trovare link, che appare esattamente come questo:

<a href="#">Baxter</a> 

E utilizzare questo:

$("a:contains('Baxter')") 

Si abbina anche questo, che io non voglio corrispondere:

<a href="#">I'm Peter Baxter, how are you?</a> 

So che posso solo prendere tutti gli elementi e confrontare il loro contenuto nel ciclo, ma voglio essere sicuro, non c'è modo più semplice.

risposta

12

No, ma sarebbe banale per aggiungere come plugin:

$.expr[':'].contentIs = function(el, idx, meta) { 
    return $(el).text() === meta[3]; 
}; 

è possibile utilizzare questo come $('a:contentIs("Baxter")')

+0

questo è davvero un bel po 'di estensione,. Mi chiedo perché questo non è nel core –

+1

@ P.scheit È piuttosto costoso, computazionalmente ... Anche se, guardando indietro, potrebbe essere migliorato con '$ .text ([el])' piuttosto che '$ (el). text() '. – lonesomeday

Problemi correlati