动态添加元素上的JQuery选择器

动态添加元素上的JQuery选择器,jquery,selector,Jquery,Selector,我不知道如何引导JQuery选择在页面加载后动态插入DOM的元素(不是绑定处理程序) 例如: 如果我有HTML: <div id="bar"> World! </div> 那么myHappyEl将是未定义的。JQuery没有看到它,可能是因为它在加载DOM后被附加 我已经看到了很多解决一个可能相关但微妙不同的问题的建议,其中的解决方案是使用.live()/.on()在元素出现时附加一个事件侦听器。如果我想捕捉一个点击事件或什么的话,那就太棒了,但我没有;我希望能够选择

我不知道如何引导JQuery选择在页面加载后动态插入DOM的元素(不是绑定处理程序)

例如:

如果我有HTML:

<div id="bar">
 World!
</div>
那么myHappyEl将是未定义的。JQuery没有看到它,可能是因为它在加载DOM后被附加


我已经看到了很多解决一个可能相关但微妙不同的问题的建议,其中的解决方案是使用.live()/.on()在元素出现时附加一个事件侦听器。如果我想捕捉一个点击事件或什么的话,那就太棒了,但我没有;我希望能够选择动态添加的元素。

插入元素后,必须分配该变量,如下所示:

var myHappyEl = $("#foo"); //Nothing, it isnt there
var foo = '<div id="foo">Hello</div>';
$("#bar").before($(foo));
myHappyEl = $("#foo");
var myHappyEl=$(“#foo”)//没什么,它不在那里
var foo='Hello';
元(“#bar”)。之前($(foo));
myHappyEl=$(“foo”);

否则,该元素在页面上不存在。

如何将引用推送到您创建和插入的每个元素的数组中?似乎“在jQuery完成监视这些事情之后”没有问题-不,jQuery根本不监视元素创建。当您将选择器传递给$()时,就像在$(“#foo”)示例中一样,jQuery会查找此时匹配的元素。事实上,这是正常的。问题是,美元在(foo)之前;正在由事件处理程序执行。因此,myHappyEl=$(“#foo”);是在事件完全手动执行之前执行的(因为数据库访问)。您能解释一下这里发生了什么吗?我不太理解$(foo)部分。@kburlz--
foo
只是一个HTML字符串,
$(foo)
包装该HTML字符串并创建一个jQuery元素。
<div id="foo">Hello</div>
<div id="bar">
 World!
</div>
myHappyEl = $("#foo");
var myHappyEl = $("#foo"); //Nothing, it isnt there
var foo = '<div id="foo">Hello</div>';
$("#bar").before($(foo));
myHappyEl = $("#foo");