selector jQuery “no contiene”

2 minutos de lectura

avatar de usuario
jose

los :contiene() El selector de jQuery le permite hacer coincidir los elementos de búsqueda que contienen una cadena de texto específica. Lo que quiero hacer parece estar relacionado: le estoy proporcionando al usuario un cuadro de texto de “filtro” en el que puede escribir, y tengo un conjunto de elementos de lista.

Quiero que todos los elementos de la lista que no contengan el texto que el usuario ingresó en el cuadro de texto se oculten mientras escriben.

Puedo escuchar el evento keyup en el cuadro de texto, pero no estoy seguro de cómo hacer dos cosas:

  1. “Invertir” los resultados del selector :contains()–Quiero seleccionar elementos que no combinarlos y ocultarlos.
  2. Haga que las mayúsculas y minúsculas coincidan.

Se me ha ocurrido que podría usar .filter( función(índice) )pero me pregunto si estoy pensando demasiado en esto: ¿hay alguna manera de lograr esto con los selectores/funciones integrados en jQuery?

  • Sólo $(".something:not(:contains('text'))") obras. Acabo de probar en este hilo: $(".question:not(:contains('filter2134234'))")

    – megawac

    19 de noviembre de 2013 a las 2:43

  • Para el segundo punto: “¿Hay un selector jQuery: contiene mayúsculas y minúsculas?”

    – Jonathan Lonowski

    19 de noviembre de 2013 a las 2:45


avatar de usuario
brianna

Asumiendo que el texto de su usuario está almacenado en una variable llamada userString:

$(':not(:contains('+ userString +'))').hide(); 

ocultará todos los elementos que no contengan esa cadena.

Editar: si tiene control sobre los elementos en los elementos de la lista, puede transformar el texto del usuario cuando lo almacena en el userString var.

  • Terminé usando una función de filtro de todos modos, porque necesitaba hacer que la búsqueda no distinguiera entre mayúsculas y minúsculas, y no había una transformación simple de la entrada del usuario que hiciera coincidir el texto de los elementos de la lista. Pero, creo que esta es la mejor respuesta que voy a obtener.

    – José

    19 de noviembre de 2013 a las 12:05

  • Revisé la discusión sobre la pregunta stackoverflow.com/questions/187537/… y sentí que era más simple usar una función de filtro que probar y modificar :contains para distinguir entre mayúsculas y minúsculas.

    – José

    19 de noviembre de 2013 a las 12:06

  • Tener una vulnerabilidad de inyección, por ejemplo como entrada: test)),other...

    – e-info128

    17 oct 2020 a las 19:27


avatar de usuario
dinesh kandpal

Digamos que quieres la lista de all <td> that no contiene la cadena ‘Dinesh’ (suponiendo que Dinesh esté dentro del atributo del nombre)

$('tableId > tbody > tr > td').not("[name*='Dinesh']")

avatar de usuario
Habrashat

Utilizar este:

$("div:not(:contains('John'))").css("text-decoration", "underline");

  • Agregue su fuente, esta se puede encontrar a través de una búsqueda rápida en Internet.

    – Alejandro

    29 de octubre de 2015 a las 12:18

¿Ha sido útil esta solución?