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;
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();
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();