2009-08-14 9 views
9

Étant donné le balisage suivant.Passage à un élément enfant spécifique avec le prototype

<div id="example"> 
    <div> 
    <div> 
     <input type='hidden'></input> 
    </div> 
    </div> 
</div> 

Comment puis-je obtenir rapidement l'élément d'entrée masqué, étant donné que j'ai l'ID pour le plus haut sommet div élément avec l'ID « exemple »?

Je peux bidouiller à l'intérieur pour que je puisse simplement parcourir chaque élément enfant jusqu'à ce que j'atteigne l'entrée, cependant, je voudrais améliorer cela et utiliser Prototype et sauter simplement à cette entrée cachée étant donné la div.

Merci!

Répondre

16
$$('#example input[type=hidden]').first() 
+0

Merci! Je savais que c'était simple (et cela prend tout son sens). J'ai vraiment besoin de me familiariser avec JS et de trouver ce dont j'ai besoin dans les docs. – mwilliams

+0

Ceci en utilisant jQuery. Que diriez-vous de l'obtenir rapidement en utilisant javascript normal? – Sriram

+0

Comment faire cela quand 'example' est une classe, pas un identifiant? – Sliq

26

Prototype fournit un tas de façons de le faire:

// This, from Bill's answer, is probably the fastest, since it uses the 
// Browser's optimized selector engine to get straight to the element 
$$('#example input[type=hidden]').first(); 

// This isn't bad either. You still use the browser's selector engine 
// To get straight to the #example element, then you must traverse a 
// (small) DOM tree. 
// 
// element.down(selector) selects the first node matching the selector which 
// is an decendent of element 
$('example').down('input'); 

// Here, you'll get an array containing all the inputs under 'example'. In your HTML 
// there is only one. 
$('example').select('input') 

// You can also use element.select() to combine separate groups of elements, 
// For instance, if you needed all the form elements: 
$('example').select('input', 'textarea', 'select'); 
-2

Je préfère l'approche directe

document.forms[0].fieldName.value 

Ce qui est moins de code, pas besoin d'utiliser jQuery et est plus amical à la conception de code.

Questions connexes