Come ottenere il nodo del testo dopo l’elemento?

Usando jQuery. Ho il seguente codice HTML:

 All the world 

Come potrei ottenere SOLO il testo. quale selettore dovrei usare? (Ho bisogno di “Tutto il mondo”)

Inoltre, non posso toccare l’HTML …

Prova a usare la funzione DOM .nextSibling per scegliere il nodo successivo (compresi i nodes di testo) e usa nodeValue per ottenere il testo All the world

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

Basta usare la semplice nextSibling JavaScript, anche se devi “abbandonare” jQuery per usare quel metodo (da cui [0] ):

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

Demo di JS Fiddle .

E alla fine ho capito cosa c’era di sbagliato con il mio altro suggerimento, che è stato risolto:

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

Demo di JS Fiddle .

E per essere sicuri di ottenere i textNodes da prima (anche se francamente questo sta diventando eccessivamente complesso, e il primo suggerimento funziona molto più facilmente e, sospetto in modo affidabile):

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

Demo di JS Fiddle .

Se hai aggiunto label al tuo markup (che è raccomandato), potresti farlo in questo modo:

HTML

  

JS

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