在jQuery appendTo函数之后选择一个元素

时间:2009-06-18 02:57:22

标签: jquery ajax

我需要通过jQuery动态地将一组元素附加到div,然后转向并引用它们。你不能这样做真的很奇怪,因为如果你在firebug中查看DOM,元素就在那里。 jQuery就好像它们不存在一样。

HTML ...

<div id="images"></div>

这使我的元素添加到<div> ...

        $.getJSON("http://localhost/wordpress/test.php",
        function(data){
          $.each(data, function(i,item){
            $("<img/>").attr("src", item).appendTo("#images");
          });
        });

然后我立即尝试选择并使用图像...

        $("img").each(
            function(i,item) {
                alert(item);
            });

jQuery不会选择任何新添加的元素。它基本上就像没有添加任何图像一样。

2 个答案:

答案 0 :(得分:5)

我猜想当你运行第二段代码时,图像还没有出现。 getJSON调用是异步的。这意味着您不知道它何时返回并将图像元素添加到页面中。

您是否尝试在调用appendTo的同一函数中添加第二个代码块?当人们进行异步代码时,这是混淆的常见原因。

答案 1 :(得分:3)

你需要使用jQuery的live function,因为在页面加载后你的新图像被插入到DOM中。

作为一个简单的例子:

$("img").live("click", function() {
    alert(this);
});

无论何时添加,都会在页面上的每个图像上触发警报。您的典型$("img").click()无法处理您的附加图片。