2009-10-04 8 views
0
$("br").parent().contents().each(function(i) { 
    if(this.nodeType == "#Text") 
    { 
     alert(this.textContent); 
    } 
}); 

je suis en train de sélectionner tous les textes non entourés par des balises html, mais séparés par <br>obtenir des nœuds sans textes

faisant cela, retourne parfois beaucoup de messages d'alerte, même quand il ne devrait y avoir deux ou trois .

i ont essayé de filtrer à l'aide

if(this.nodeValue != "") or if(this.textContent != "") 

mais encore, les messages d'alerte vides pop-up. Je suspecte ses espaces blancs dans le document html (je ne le contrôle pas)

Je veux seulement afficher this.textContent, qui a effectivement du texte visible.

Répondre

0

Un type de nœud de nœud de texte est 3, donc:

$('br').parent().contents().each(function() { 
    if (this.nodeType == 3) { 
     var text = (this.textContent ? this.textContent : this.innerText), temp = text.replace(/\s+/g, '') 
     if (temp.length) { 
      alert(text) 
     } 
    } 
}) 

démonstration en direct: http://jsbin.com/abalu

+0

Je reçois le texte est une erreur non définie. text = text.replace (/ \ s +/g, '') – KJW

+0

Essayez mon exemple mis à jour. Mon précédent ne tenait pas compte des éléments br. –

+0

Si vous souhaitez supprimer les espaces d'alerte, vous pouvez utiliser .replace (/^\ s + | \ s + $ /, ''). –

Questions connexes