2011-01-12 16 views
8

Czy jest jakiś sposób - dowolny selektor jQuery (nie znalazłem żadnego na http://api.jquery.com/category/selectors/), który może być użyty jako dopasowanie ścisłe?selektor jQuery - Dopasuj zawartość elementów

:contains() jest prawie to, czego potrzebuję, ale nie do końca. ": zawiera" wyszukiwań w każdym elemencie regex tak:

.*<query>.* 

Czyli, jeśli muszę znaleźć odnośnik, który wygląda dokładnie tak:

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

i wykorzystują to:

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

pasuje także to, czego nie chcesz, aby dopasować:

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

Wiem, że mogę po prostu wziąć wszystkie elementy i porównać ich zawartość w cyklu, ale chcę mieć pewność, że nie ma łatwiejszego sposobu.

Odpowiedz

12

Nie, ale byłoby trywialne dodać jako plugin:

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

Następnie można użyć tego jako $('a:contentIs("Baxter")')

+0

ów naprawdę ładne, trochę rozszerzenie. Zastanawiam się, dlaczego to nie jest w rdzeniu –

+1

@ P.scheit Jest to dość kosztowne, obliczeniowo ... Chociaż patrząc wstecz, można go poprawić za pomocą '$ .text ([el])' zamiast '$ (el). text() '. – lonesomeday