我需要通过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不会选择任何新添加的元素。它基本上就像没有添加任何图像一样。
答案 0 :(得分:5)
我猜想当你运行第二段代码时,图像还没有出现。 getJSON调用是异步的。这意味着您不知道它何时返回并将图像元素添加到页面中。
您是否尝试在调用appendTo的同一函数中添加第二个代码块?当人们进行异步代码时,这是混淆的常见原因。
答案 1 :(得分:3)
你需要使用jQuery的live function,因为在页面加载后你的新图像被插入到DOM中。
作为一个简单的例子:
$("img").live("click", function() {
alert(this);
});
无论何时添加,都会在页面上的每个图像上触发警报。您的典型$("img").click()
无法处理您的附加图片。