Usando jQuery, quiero seleccionar un enlace que contenga exactamente algún tipo de texto. Por ejemplo:
<p><a>This One</a></p>
<p><a>"This One?"</a></p>
<p><a>Unlikely</a></p>
He intentado esto:
$('a:contains("This One")')
Pero elige el primer Y el segundo enlace. Solo quiero el primer enlace, que contiene exactamente "Este". ¿Cómo puedo hacer eso?
jquery
jquery-1.6
Endy Tjahjono
fuente
fuente
Respuestas:
Puedes hacerlo:
Referencia: http://api.jquery.com/filter/
fuente
return
. Tengo que cambiarlo afunction(index) { return (this.text === 'This One') }
Un compañero de trabajo extendió jQuery con una función para hacer esto:
El resultado es que puede seleccionar algo por texto exacto de esta manera:
Esto lo hace fácil, ya que no tiene que recordar la sintaxis exacta cada vez. Su publicación completa está aquí: jQuery Custom Selector para seleccionar elementos por texto exacto: textEquals
fuente
Para ampliar la respuesta de FishBasketGordo. Si está intentando hacer la selección en una gran cantidad de elementos, utilice
:contains()
primero para reducir y luego aplique el filtro.Esto mejorará la velocidad general:
fuente
tuvo que modificar la solución de Nariman para ser:
De lo contrario, no funcionó en Chrome (Linux)
fuente
Estaba usando la extensión
Pero descubrí que la implementación ya no funciona con jQuery 1.7 (aparentemente un cambio en Sizzla.filter). Después de luchar durante un tiempo para que funcione, simplemente escribí un complemento jQuery para lograr lo mismo.
Utilizar:
Solo quería compartir, en caso de que alguien más se encuentre con esto (,
fuente
Entonces, la respuesta de Narnian funciona bastante bien. Sin embargo, al usarlo en la naturaleza, me encontré con algunos problemas, en los que no se encontraban las cosas que esperaba encontrar. Esto se debe a que a veces hay espacios en blanco aleatorios alrededor del texto del elemento. Creo que si estás buscando "Hello World", aún querrás que coincida con "Hello World" o incluso con "Hello World \ n". Por lo tanto, acabo de agregar el método "trim ()" a la función, que elimina los espacios en blanco circundantes, y comenzó a funcionar mejor. Además, modifiqué los nombres de las variables para que fueran un poco más claros en mi mente.
Específicamente...
Y nota secundaria ... recortar solo elimina los espacios en blanco antes y después del texto buscado. No elimina los espacios en blanco en medio de las palabras. Creo que este es un comportamiento deseable, pero podrías cambiarlo si quisieras.
fuente
Siento que me falta algo basado en la respuesta de todos los demás al filtro, pero ¿por qué no seleccionar el primer elemento dentro de la matriz de elementos que devuelve 'contiene'?Esto funciona, solo si sabe que el primer enlace tiene la coincidencia exacta que está buscando. Otras respuestas funcionan mejor si no está seguro de en qué orden estarán los enlaces.
fuente
Cómo obtener el valor seleccionado de un drop-dwon:
console.log($("option").textEquals("Option One"));
- devolverá el valor del menú desplegablefuente
fuente
Lo siento, si esto coincide exactamente con la respuesta anterior de alguien,
Aquí hay algunos resultados en la consola de la página de resultados de búsqueda de Linkedin.
También tiene compatibilidad con mayúsculas y minúsculas y no utiliza
:contains()
Editar (22 de mayo de 2017): -
fuente