2011-12-24 7 views
1

domからどのように要素を取得しますか?jQuery Dom numbers

+0

を?あなたはもう少し説明できますか? – kapa

+2

どのようにカウントしたいのか説明しなければなりません。 DOMは階層的であり、逐次的ではありません。あなたは親+前の兄弟または前の兄弟+親+親の前の兄弟+親の親+親の親の前の兄弟などをしますか? – jfriend00

+1

この例では、 "test"要素のインデックスは何ですか:http://jsfiddle.net/jfriend00/LsfQs/ – jfriend00

答えて

0

あなただけのユニークその後、DOMの要素を識別し、バック将来的には同じDOM要素に取得できるようにしたい場合は、私はあなたが*

//retrieve the index 
$('*').index($('button')); 
    //access the element by index 
$('*:eq('+index+')'); 
+0

これは私が探しているものを達成するように見えます!これは、DOM内の多くのノードを持つ大きなページで実行するのに十分効率的ですか? – Rila

+2

私の意見では、インデックスは要素を識別するための良い解決策ではないという事実です。 DOMが変更される可能性があります。ノードが挿入または削除されると、インデックスは別の要素と一致します。ユーザーは、独自にDOMを変更することもできます。 Greasemonkey-scriptsやそれに類するものを使って、私はこれを行うことを勧めません。 –

+0

@Rilaそれは全く効率的ではありません。 IDまたはクラスを使用してください。セレクタを書くためのものです。 – kapa

0

ユニバーサルセレクタを探していると思います要素への参照を直接保存するだけです。ドキュメントの先頭から数えていく何らかの奇妙なセレクタを介して要素を戻す必要はありません。実際の要素への参照を保存するだけで済みます。例:

var lastClickedItem; 

$("div").click(function() { 
    if (lastClickedItem) { 
     $(lastClickedItem).removeClass("clicked"); 
     // do other things to the last clicked item 
    } 
    $(this).addClass("clicked"); 
    lastClickedItem = this; 
}); 

このコードは、lastClickedItemをグローバル変数に保存します。それをグローバル変数に保存する必要はありません。あなたはそれに一意のIDまたはクラス名を与え、それを使って与えられた要素を取り出すことができます。同じ要素に戻るためにDOMの前面から数えるのはかなり非効率的です。

あるいは、ユニークなクラス名使用して:あなたは、「DOMのルートに関して、要素のインデックス」とはどういう意味ですか

$("div").click(function() { 
    $(".lastClick").removeClass("lastClick"); 
    $(this).addClass("lastClick"); 
}); 
+0

残念ながら私の使用例はちょっと偏心しています。ページが別のブラウザに別の時間に読み込まれているときにDOM要素を識別できるようにする必要があります。だから、問題は、どのようにして** **要素への一意の参照を**保存することができるかということです。私の使用例は、要素を一意に見つけて変更する必要のあるA/Bテストツールに似ています。これであなたの継続的な助けに感謝します! – Rila

+1

私はあきらめます。私たちはたくさんの仕事をしています。あなたが本当にやろうとしていることだけを説明します。ドキュメントを変更することができず、要素参照を格納できない場合は、非効率的なメカニズムを数えてください。 DOMの変更に対しては脆弱ですが、ケーキを食べて食べることはできません。 – jfriend00

+0

あなたは正しいです、私はより明確に私の意図を説明していたはずです。とにかくこれで助けてくれてありがとう、それは非常に感謝しています。 – Rila