2010-12-15 65 views
1

Est-il possible de sélectionner la valeur d'une balise qui ne se trouve pas dans une autre balise imbriquée?jquery selector - Sélectionnez la valeur qui ne se trouve pas dans une autre balise imbriquée

Par exemple dans le code suivant je veux obtenir 'Texte que je veux sélectionner' de $ ('# example').

<td id="example"> 
    <a> Text I don't want to select</a> 
    <span> Other text I don't want to select</span> 
    Text I want to select 
    <anyOtherTag> Other text I don't want to select</anyOtherTag> 
</td> 

Merci.

+0

jQuery n'a pas de fonction d'assistance pour cela. Voici un bon fil sur le problème (Comment puis-je sélectionner les nœuds de texte w/jQuery). http://stackoverflow.com/questions/298750/how-do-i-select-text-nodes-with-jquery –

Répondre

3

Vous pouvez utiliser .contents() et .filter() vers le bas pour les types de noeud texte (nodeType == 3), comme celui-ci:

var text = $("#example").contents().filter(function() { 
       return this.nodeType == 3; 
      }).text(); 
alert($.trim(text)); 

You can try it out here. puisque .text() obtient tous les nœuds de texte, y compris l'autre espace, vous voulez probablement $.trim() (puisque IE < 9 n'a pas String.trim()) le résultat comme je l'ai ci-dessus.

+0

Merci bonne idée. Le seul problème est que je ne le fais pas fonctionner dans mon exemple réel. En effet ma table est utilisée avec jquery plugin datatables et jeditable donc quand l'utilisateur clique sur une table je veux obtenir cette information. J'ai connecté mes variables et je reçois avec $ (this) le bon td, mais quand je fais $ (this) .contents() il est vide. Peut-être parce que j'utilise le plugin datatables? – Javi

+0

@Javi - tout dépend de votre contexte, essayez un 'console.log (this)' et voyez où vous en êtes quand cela arrive –