2011-04-06 12 views
1

DOMトラバーサルと言えば、ここでjQueryのドキュメントを完全に理解しているか分かりません。本当にラッパーオブジェクト内のDOMのコピーをトラバースすることを意味しますか? .get()や.next()のようなメソッドを使用するのは、実際にDOMのコピーをトラバースしているのに対し、実際のトラバーサルは要素を選択するときに行われるようです。私はこれに賛成ですか、何かが恋しいですか?jQuery DOM Traversalの明確化

ありがとうございました!

+1

よく、いいえ。 'remove()'や 'hide()'のような 'jquery'メソッドを適用すると、アクションがあるので、 –

+0

コピーをトラバースしていないという意味ですか? – maximus

+0

まあ、それはちょうど論理、mmm ..確かではありません。コピーに作用すると 'remove'や' hide'のような効果が得られないので、 –

答えて

2

jQuery関数はオブジェクトを返します。数値にはの数値があり、コピーではなくDOM要素に対してとなります。

<p id="p0">p0</p> 
<p id="p1">p1</p> 

<script> 
var paragraphs = $('p'); 
</script> 

段落Pへの参照である値のID P0とp要素への参照は「0」プロパティを持つオブジェクト、及び「1」プロパティになりますので、次の指定されましたidがp1の要素。あなたは使用して、最初のpを参照することができます:

paragraphs['0']; 

のjQueryを使用して、の繰り返し処理、その後、オブジェクトのプロパティなどの要素を「収集」するセレクタ(または複数のセレクタ)を使用することができるという点で、「DOMをトラバース」に役立ちますそのオブジェクトの数値プロパティとそれらを使って何かを行います。したがって、上記のp要素にクラスを追加するためにあなたが行うことができます:

paragraphs.each(function(i,el){$(el).addClass('newClass')}) 

同等の平野JavaScriptでは、次のようになります。

myLib.addClassはにクラスを追加するための簡単な関数である
var paragraphs = document.getElementsByTagName('p'); 
var i = paragraphs.length; 
while (i--) { 
    myLib.addClass(paragraphs[i], 'newClass'); 
} 

classNameプロパティaddClass機能は少し賢くている場合は、要素の参照の配列(または配列のようなオブジェクト)を受け入れることができるので、その後、POJSのバージョンは次のようになります。だから、同等アドホック「DOMのトラバーサル」を構築

myLib.addClass(document.getElementsByTagName('p'), 'newClass'); 

能力は特に困難ではない。