2011-01-25 4 views
0

私が代わりに私はそれを後でアクセスできるようにそれはID属性の関連付けをDIV与えるのが、私がアクセスするjQuery.data()を使用したいと思い、体にdiv要素を追加するので、jQuery .data()は後でアクセスするためのIDを格納しますか?または他の方法?

 
$('<div>').appendTo(document.body); 

をしようとしていますあとでdivにすると、アクションを適用することができます。

 
$('<div>').data('#myid').appendTo(document.body); 

今すぐ後でアクセスします。

+0

あなたは傾けることができます。あなたはそれへのポインタを失う。それをvaraibleとして保管してください。 – Raynos

+0

私はDIVとIDを結びつけたくないです。それ以外の方法は? – kr1zmo

+0

'data()'の使用はお勧めしません。 'goto'を使うのと同じ程度のユースケースがあります(いくつかのコンテキストでは存在しますが、一般的には"良い方法ではありません ")。代わりに、クロージャ(変数)、オブジェクトのプロパティ、個別のマニュアルルックアップテーブル、「idや他のものを選択可能なもの」などがあります。 –

答えて

4
var later = $('<div>').appendTo(document.body); 
// ... 
later.actions(); 
1

これはかなり奇妙です。 data-expandoの上に何らかの種類のidを設定しても、後でどこにアクセスするかはわかりません。そのデータプロパティを含む要素への参照がありません。

新しく作成されたノードの参照を保持する最も良い方法は、ローカル変数に格納することです。あなたのコメントに

をReferrencing

var $newdiv = $('<div>').appendTo(document.body); 

ほとんどすべてのjQueryのメソッドはjQueryのオブジェクトを含むラップセットを返します。これらのオブジェクトは、DOMノードへの参照を保持します。あなたは橋のように考えることができます。一方はあなたのECMAland(Javascript)で、もう一方はDOMlandです。そのブリッジを越えてDOMノード(高価なbtw)から参照を取得する場合は、その参照をECMAlandに格納することができます。次にDOM nodeにアクセスする場合は、ブリッジを通過して高価な料金を支払う必要はなく、まだその参照があり、DOMノードを操作できます。

+0

これは素晴らしいことですので、newdiv.appendTo(document.body)でdivを追加します。隠す()。どのように私はそれを何度も何度も何度も追加し続けることができます。私はif(newdiv.length!= 0){} < - これはdomにdivをまだ追加していなくても1を返しています。 – kr1zmo

0

IDなしで後で取得する必要がある場合は、DOM内のすべてのオブジェクトを繰り返し処理して、divであるかどうかを確認します。

for (var i = 0; i < document.getElementsByTagName("*").length; i++) { 
    if ($(document.getElementsByTagName("*")[i]).data("isMyDiv")) { 
     var myDiv = $(document.getElementByTagName("*")[i]); 
    } 
} 

if (myDiv !== undefined) { 
    // do stuff 
} 

効率的なコードを書くこともできます。

関連する問題