texto style page obtener name modificar con change body attribute jquery text

style - modificar el title con jquery



¿Encontrar cadena de texto usando jQuery? (7)

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


Echa un vistazo a highlight (jQuery plugin).


Esta función debería funcionar. básicamente hace una búsqueda recursiva hasta que obtenemos una lista distinta de nodos de hoja.

function distinctNodes(search, element) { var d, e, ef; e = []; ef = []; if (element) { d = $(":contains(/""+ search + "/"):not(script)", element); } else { d = $(":contains(/""+ search + "/"):not(script)"); } if (d.length == 1) { e.push(d[0]); } else { d.each(function () { var i, r = distinctNodes(search, this); if (r.length === 0) { e.push(this); } else { for (i = 0; i < r.length; ++i) { e.push(r[i]); } } }); } $.each(e, function () { for (var i = 0; i < ef.length; ++i) { if (this === ef[i]) return; } ef.push(this); }); return ef; }


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 cadena simple" . Primero envuelve 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 hacer esto.

$(''*[containsStringImLookingFor]'').css("border","solid 2px red");


Normalmente, los selectores de jQuery no buscan dentro de los "nodos de texto" en el DOM. Sin embargo, si utiliza la función .contents (), se incluirán los 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 });


Si solo quieres el nodo más cercano al texto que estás buscando, puedes usar esto:

$(''*:contains("my text"):last'');

Esto incluso funcionará si su HTML se ve así:

<p> blah blah <strong>my <em>text</em></strong></p>

Usando el selector anterior encontrará la etiqueta <strong> , ya que es la última etiqueta que contiene toda la cadena.


Solo agregando a la respuesta de Tony Miller, ya que esto me llevó al 90% de lo que estaba buscando pero aún no funcionó. Añadiendo .length > 0; hasta el final de su código consiguió mi script de trabajo.

$(function() { var foundin = $(''*:contains("I am a simple string")'').length > 0; });


jQuery tiene el método contiene. Aquí hay un fragmento para usted:

<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. El Foundin será un objeto jQuery que contiene cualquier elemento coincidente. Consulte la información de la API en: http://docs.jquery.com/Selectors/contains#text

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