2012-07-06 13 views
23

per esempio abbiamo questo filejquery - ottenere il testo per l'elemento senza figli testo

<div id="mydiv"> 
    some text here 
    <div id="inner div"> 
     text for inner div 
    </div> 
</div> 

ho bisogno di ottenere #mydiv solo testo con un certo codice come questo:

alert($('#mydiv').text()); // will alert "some text here" 
+0

Quindi vuoi * tutti * i nodi di testo figlio, senza nodi di testo profondamente annidati? –

+0

@ F.Calderan grazie –

risposta

43

hey provare questo per favore" : http://jsfiddle.net/MtVxx/2/

Buon collegamento per il caso specifico qui: http://viralpatel.net/blogs/jquery-get-text-element-without-child-element/ (Verrà visualizzato solo il testo dell'elemento)

Spero che questo aiuti, :)

codice

jQuery.fn.justtext = function() { 

    return $(this).clone() 
      .children() 
      .remove() 
      .end() 
      .text(); 

}; 

alert($('#mydiv').justtext());​ 
+0

@Random nopes non sono io:: P' i miei plugin sono di solito lunghi e lunghi e noiosi plugin ':)' (Not) –

+7

+1 per l'uso di .end(). Mai saputo che esistesse e ora è hella-utile. – Grinn

+0

@Grinn saweet bruv, ci sono alcuni jq apis, che sono fantastici da usare ma non molto usati, :) divertente che huh, grazie per più 1. –

24

Il momento accepted answer è abbastanza orribile in termini di prestazioni, quindi mi sono sentito obbligato a dare una più leggera una:

$.fn.mytext = function() { 
    var str = ''; 

    this.contents().each(function() { 
     if (this.nodeType == 3) { 
      str += this.textContent || this.innerText || ''; 
     } 
    }); 

    return str; 
}; 

console.log($('#mydiv').mytext());​ 
+1

Molto meglio! Stavo cercando un modo per iterare su ogni figlio dell'elemento selezionato, e non sapevo di 'contents()', grazie! –

+0

Vedere http://stackoverflow.com/a/6520267/14731 per una risposta correlata. – Gili

Problemi correlati