valor texto span obtener div contenido como cambiar asignar jquery text selection nodes

div - obtener texto de un span jquery



jQuery selecciona nodos de texto y elimina su contenido (5)

empty() se usa para vaciar el texto innerText de un elemento y no se aplica a textNodes. En su lugar, debe usar remove() :

$(''.example'') .contents() .filter(function () { return this.nodeType === 3; //Node.TEXT_NODE }).remove();

Ejemplo de violín

Estaba buscando una respuesta a esta pregunta, y se me ocurrió esto

stackoverflow: ¿cómo selecciono los nodos de texto con jQuery?

¿Hay hasta ahora otra manera de hacer esto? En mi caso, estoy tratando de encontrar cada nodo de texto a partir de un elemento DOM dado y

empty()

eso. Alguna sugerencia ?

ACTUALIZACIÓN - Después de un poco de lío, se me ocurrió este jsFiddle

Ahora la función selecciona cada nodo de texto, pero en lugar de reemplazar solo los vacíos con el nuevo valor dado, los reemplaza a todos. Qué estoy haciendo mal ??


$(document).ready(function(){ var prova = [''1'',''2'',''3'',''4'',''5'',''6'']; $(''.example'').find(''*'').each(function(){ $(this).contents().filter(function(){ //this.trim(); if( this.nodeType === 3 && this.nodeValue.trim().length === 0){ this.nodeValue = ''new value''; } }); }); });

http://jsfiddle.net/trevordowdle/RajB4/40/


Con referencia a esto ''Ahora la función selecciona cada nodo de texto pero en lugar de reemplazar solo los vacíos con el nuevo valor dado, los reemplaza a todos. Qué estoy haciendo mal ??''

Lo que se requiere es que simplemente pruebe nodeValue para espacios en blanco usando una expresión regular y luego, sobre la base de esto, proceda en adelante.

Lo he actualizado así y funciona bien http://jsfiddle.net/Vj5LR/2/

$(document).ready(function(){ var prova = [''1'',''2'',''3'',''4'',''5'',''6'']; var regForNonWhiteSpace = //S/; // non white space $(''.example'').find(''*'').each(function(){ $(this).contents().filter(function(){ //this.trim(); if( this.nodeType === 3 && !regForNonWhiteSpace.test(this.nodeValue)){ this.nodeValue = ''new value''; // only when there is no content at all } }); }); });

Espero que esto resuelva el problema


¿Qué hay de esta demo http://jsfiddle.net/RajB4/42/

if( this.nodeType === 3 && this.nodeValue.trim().length != 0){ this.nodeValue = ''new value''; }


Según lo entendí, creo que esto es lo que estás buscando:

$(''.example'').each(function(){ console.log($(this).contents()); $(this).contents().filter(function(){ if( this.nodeType === 1 && this.childElementCount == 0 && this.textContent == ''''){ this.textContent = ''new value''; } }); });

Puedes consultar el violín