2009-04-24 8 views
1

J'ai environ mille balises DIV structuré de cette façon:moyen le plus rapide d'accéder à un noeud

<div id="1"> 
    <div class="1"></div> 
    <div class="2"></div> 
    ... 
</div> 

<div id="2"> 
    <div class="1"></div> 
    <div class="2"></div> 
    ... 
</div> 

Si je veux maintenant accéder à un noeud particulier, dire « div # 10 div.5 » - ce qui est le plus rapide façon de le faire en utilisant javascript DOM traversal? J'ai déjà les valeurs d'index "10" et "5" - je cherche juste le moyen le plus rapide d'y parvenir.

Merci beaucoup.

+0

Les noms de classe et les ID ne doivent pas commencer par des nombres ... – James

Répondre

3

Sans validation et en supposant que les nœuds enfants sont les seuls noeuds et tous dans l'ordre;

document.getElementById('10').childNodes[4]; 

Attention aux espaces qui devient un nœud https://developer.mozilla.org/En/Whitespace_in_the_DOM

+0

Oui, merci, je pense que c'est à quelle vitesse ça peut arriver! Bien qu'il soit injuste de comparer un JS pur à une bibliothèque JS spécifique, dans ce cas, le JS pur est le meilleur en ce qui concerne la vitesse! –

3

utilisant jquery:

alert($("#10 > .5").html()); 
+0

Je le ferais en second lieu. C'est le plus rapide au moins en termes de saisie de la sémantique du code. –

4

Si vous avez environ 1000 DIVs Je suppose que cela est généré automatiquement html?

Si oui, y a-t-il une raison pour laquelle vous ne pouvez pas ajouter un ID aux DIVs internes?

<div id="1"> 
    <div id="1.1" class="1"></div> 
    <div id="1.2" class="2"></div> 
    ... 
</div> 

<div id="2"> 
    <div id="2.1" class="1"></div> 
    <div id="2.2" class="2"></div> 
    ... 
</div> 

Ensuite, vous pouvez simplement utiliser getElementById et ne pas avoir à vous soucier de la commande ou de l'espacement, etc.

Depuis ids élément doivent être uniques sur la page, alors cela devrait toujours être le moyen le plus rapide pour rechercher le élément.

+0

Oh oui! Merci, cette idée ne m'est jamais venue à l'esprit! –