2009-08-14 10 views
9

を持つ特定の子要素への移動次のマークアップがあるとします。プロトタイプ

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

ID「example」を持つ一番上のdiv要素のIDがあるので、私はすぐに非表示の入力要素を取得できますか?

私は入力をヒットするまで各子要素を反復することができますが、それを改善してPrototypeを利用して、divを指定した隠れた入力にジャンプしたいと思います。

ありがとうございます!

答えて

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

ありがとうございます!私はそれがシンプルであることを知っていた(そして、それを見て完全に意味をなさない)。 JSでスピードアップし、ドキュメントに必要なものを見つけることが本当に必要です。 – mwilliams

+0

これはjQueryを使用しています。どのように迅速に通常のjavascriptを使用して取得する? – Sriram

+0

'example'がクラスで、IDではないときにこれを行う方法? – Sliq

26

プロトタイプがこれを行う方法の全体の束を提供しています。

// 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

私は直接的なアプローチに以下のコード、jQueryのを使用する必要はありませんし、もっとある

document.forms[0].fieldName.value 

を好みますコード設計にやさしい。