¿Buscar una cadena de texto usando jQuery?

Digamos que una página web tiene una cadena como "Soy una simple cadena" que quiero encontrar. ¿Cómo puedo hacer esto usando JQuery?

Solución

jQuery tiene el método contains. Aquí's un fragmento para usted:

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

El selector anterior selecciona cualquier elemento que contenga la cadena objetivo. El 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, incluyendo los elementos html y body, que probablemente no quiera. Por eso la mayoría de los ejemplos en jQuery y otros lugares utilizan $('div:contains("Soy una simple cadena")')

Comentarios (6)

Normalmente los selectores de jQuery no buscan dentro de los "nodos de texto" en el DOM. Sin embargo, si utiliza la función .contents(), los nodos de texto se incluirán, entonces puede utilizar la propiedad nodeType para filtrar sólo 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(){
            // Sólo coincide cuando contiene 'cadena simple' en cualquier parte del texto
            return this.nodeValue.indexOf('simple string') != -1;
        })
        .each(function(){
            // Hacer algo con this.nodeValue
        });
Comentarios (3)

Echa un vistazo a highlight (plugin jQuery).

Comentarios (0)