我正在使用这个
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("picHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getpic.php?q="+str+"&t=" + Math.random(),true);
xmlhttp.send();
传入数据并使用getpic.php中PHP代码的回显生成未定义数量的图片
while($row = mysql_fetch_array($result)){
echo "<div id=" . $num . "><img src=QR/" . $row['img']".png></div>";
}
所以这些图片确实产生了,但是,现在我正在尝试使用
$("#img").click(function () {
alert("Hi");
});
但没有得到任何警报。顶部函数发布的东西,但我似乎无法调用内部的ID?如何在外部div中调用div或img?
答案 0 :(得分:2)
如果您异步生成内容,$.click()
将无效,除非您手动将其附加到每个新元素。请尝试使用$.live()
:
// Applies itself to all <img /> tags.
$("img").live("click",function(){
alert("Hi");
});
请务必检查您的id
,并注意使用整数作为您的ID不是一个好习惯。如果您希望使用图像的数字ID作为id,请在其前面添加某种类型的alpha值,例如#image19
。
答案 1 :(得分:1)
#
符号表示以JQuery方式按ID过滤。您需要按标签类型进行过滤,这意味着您可以使用:
$("img").live(function () {
alert("Hi");
});
此外,请尝试使用引号覆盖您的属性值来遵循HTML规则:
echo '<div id="'.$num.'"><img src="QR/'.$row['img'].'.png"></div>";
答案 2 :(得分:0)
尝试$('img').live('click',function(){.....
首先,#img意味着有一个id =“img”的dom节点 对于两个,在domready之后添加的任何dom节点将无法绑定到click(),因此你必须使用live()
答案 3 :(得分:0)
您应该在ajax成功后绑定click事件,或者使用live
方法。像这样:
$("img").live("click", function () {
alert("Hi");
});
请注意,"#img"
会选择id="img"
的元素,但"img"
会选择标记为<img ../>
的所有元素。
希望这会有所帮助。干杯