2010-07-08 4 views
3

J'ai un objet jQuery et je récupère le prochain nœud frère, qui peut être un nœud de texte. Par exemple:jQuery: obtention du nœud suivant (également nœuds de texte)

<div id="test">some text<br/>other text</div> 

var test = $("#test"); 
var br = $("br", test); 
alert(br.next().length); // No next ELEMENTS 
alert(br.get(0).nextSibling.nodeValue); // "other text" 
alert(br.get(0).nextSibling.nextSibling); // null 

Le niveau DOM 2 permet d'obtenir le prochain frère NODE, mais jQuery suivant() fonctionne sur des éléments (nodeType 1, je suppose). Je demande ceci parce que j'utilise déjà jQuery et je préfère ne pas toucher les nœuds DOM directement (aussi parce que jQuery lui-même peut fournir une couche d'abstraction de DOM et peut fonctionner là où le niveau DOM 2 n'est pas supporté, mais est seulement une pensée).

Si jQuery ne fournit pas ceci, dois-je utiliser DOM comme ci-dessus, ou y at-il de meilleures options?

EDIT: J'ai oublié quelque chose: je ne veux pas obtenir SEULEMENT des éléments de texte, mais n'importe quel type de nœud, comme le fait nextSibling. J'utilise .contents() pour parcourir le contenu, mais c'est assez ennuyeux (et lent, et beaucoup d'autres choses mauvaises) quand vous avez juste besoin du prochain nœud et que DOM fournit une solution.

EDIT2: En regardant le code source jQuery, il semble qu'il dépend de nextSibling.

Répondre

7

Utilisez le DOM. N'ayez pas peur de cela; c'est facile et vous semblez déjà savoir quoi utiliser. jQuery est construit sur le DOM et pour ce genre de choses, l'utilisation du DOM fonctionnera en fait dans plus de navigateurs que la version de jQuery.

+0

Je me sens juste sale quand il s'agit de passer d'une couche d'abstraction à une autre: D (car cela annule généralement la signification des abstractions) Merci, je me sens en sécurité maintenant. Donc, je suppose que c'est sûr d'écrire mes plugins en utilisant la manipulation DOM ... (?) EDIT: Je me sens beaucoup plus sûr après avoir regardé cela http://www.quirksmode.org/dom/w3c_core.html#t74 Merci encore :) – AkiRoss

+1

L'utilisation directe du DOM est généralement sans danger. Dans certains navigateurs, jQuery vous protège des imperfections, en particulier dans Internet Explorer, mais ils sont relativement bien connus ces jours-ci (donc facilement consultables), et les sites comme QuirksMode sont d'excellentes ressources. Assurez-vous de tester fréquemment dans IE :) –

Questions connexes