texto span que obtener ejemplos div contenido con cambiar agregar javascript jquery jquery-selectors textnode

javascript - span - innerhtml que es



¿Cómo obtener nodo de texto tras elemento? (3)

Utilizando jQuery. Tengo el siguiente html:

<input type="checkbox" name=''something'' value=''v1'' /> All the world <br />

¿Cómo obtendría SOLAMENTE el texto? ¿Qué selector debo usar? (Necesito el "Todo el mundo")

Tampoco puedo tocar el HTML ...


Intente usar la función DOM .nextSibling para elegir el siguiente nodo (incluidos los nodos de texto) y use nodeValue para obtener el texto All the world

$('':checkbox'')[0].nextSibling.nodeValue


Si agregó una label a su label (que se recomienda), podría hacerlo de esta manera:

HTML

<input type="checkbox" id="something" name="something" value="v1" /><label for="something">All the world</label> <br />

JS

var text = $( ''#something ~ label:first'' ).text();


Simplemente use el nextSibling JavaScript sin nextSibling , aunque debe ''abandonar'' jQuery para usar ese método (de ahí el [0] ):

var text = $(''input:checkbox[name="something"]'')[0].nextSibling.nodeValue;

Demostración de JS Fiddle .

Y finalmente me di cuenta de lo que estaba mal con mi otra sugerencia, que se ha corregido:

var text = $(''input:checkbox[name="something"]'').parent().contents().filter( function(){ return this.nodeType === 3 && this.nodeValue.trim() !== ''''; }).first().text();

Demostración de JS Fiddle .

Y para asegurarse de que solo está obteniendo los textNodes antes que br (aunque, francamente, esto se está volviendo demasiado complejo, y la primera sugerencia funciona con mucha más facilidad y, sospecho de manera confiable):

var text = $(''input:checkbox[name="something"]'').parent().contents().filter( function(){ return this.nodeType === 3 && this.nodeValue.trim() !== '''' && $(this).prevAll(''br'').length === 0; }).text();

Demostración de JS Fiddle .