23

ページの読み込み後にDOMに動的に挿入される要素(バインディングハンドラーではない)を選択するようにJQueryを誘導する方法がわかりません。

例えば:

HTML がある場合:

<div id="bar">
 World!
</div>

次に、新しい要素を作成して DOM に挿入します。

var foo = '<div id="foo">Hello</div>';
$("#bar").before(foo);

私はこれで終わります:

<div id="foo">Hello</div>
<div id="bar">
 World!
</div>

後で、JQuery を使用してその新しい要素を操作して、挿入した要素で別のことをしたいと思うかもしれません。しかし、私がやろうとすると:

myHappyEl = $("#foo");

その場合、myHappyEl は未定義になります。おそらくDOMがロードされた後にアタッチされるため、JQueryはそれを認識しません。

おそらく関連しているが微妙に異なる問題に対処する多くの提案を見てきました。解決策は、要素が発生したときにイベントリスナーをアタッチするために .live()/.on() を使用することです。クリックイベントなどをキャプチャしたい場合は素晴らしいですが、そうではありません。動的に追加された要素を選択できるようにしたいです。

4

1 に答える 1

4

次のように、要素が挿入された後にその変数を割り当てる必要があります。

var myHappyEl = $("#foo"); //Nothing, it isnt there
var foo = '<div id="foo">Hello</div>';
$("#bar").before($(foo));
myHappyEl = $("#foo");

それ以外の場合、要素はページに存在しません。

于 2013-09-09T13:06:26.853 に答える