Saltar al contenido

¿Buscar cadena de texto usando jQuery?

Solución:

jQuery tiene el método contains. Aquí hay un fragmento para ti:

<script type="text/javascript">
$(function() {
    var foundin = $('*:contains("I am a simple string")');
});
</script>

El selector de arriba selecciona cualquier elemento que contenga la cadena de destino. Foundin será un objeto jQuery que contiene cualquier elemento coincidente. Consulte la información de la API en: https://api.jquery.com/contains-selector/

Una cosa a tener en cuenta con el comodín ‘*’ es que obtendrá todos los elementos, incluidos los elementos html y del cuerpo, que probablemente no desee. Es por eso que la mayoría de los ejemplos en jQuery y otros lugares usan $ (‘div: contains (“Soy una cadena simple”)’)

Normalmente, los selectores de jQuery no buscan dentro de los “nodos de texto” en el DOM. Sin embargo, si usa la función .contents (), se incluirán nodos de texto, luego puede usar la propiedad nodeType para filtrar solo los nodos de texto y la propiedad nodeValue para buscar la cadena de texto.

    $('*', 'body')
        .andSelf()
        .contents()
        .filter(function(){
            return this.nodeType === 3;
        })
        .filter(function(){
            // Only match when contains 'simple string' anywhere in the text
            return this.nodeValue.indexOf('simple string') != -1;
        })
        .each(function(){
            // Do something with this.nodeValue
        });

Esto seleccionará solo los elementos de hoja que contienen “Soy una cadena simple”.

$('*:contains("I am a simple string")').each(function(){
     if($(this).children().length < 1) 
          $(this).css("border","solid 2px red") });

Pegue lo siguiente en la barra de direcciones para probarlo.

javascript: $('*:contains("I am a simple string")').each(function(){ if($(this).children().length < 1) $(this).css("border","solid 2px red") }); return false;

Si quieres agarrar solo “Soy una simple cadena”. Primero envuelva el texto en un elemento así.

$('*:contains("I am a simple string")').each(function(){
     if($(this).children().length < 1) 
          $(this).html( 
               $(this).text().replace(
                    /"I am a simple string"/
                    ,'<span containsStringImLookingFor="true">"I am a simple string"</span>' 
               )  
           ) 
});

y luego haz esto.

$('*[containsStringImLookingFor]').css("border","solid 2px red");
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *