JQuery在自动生成的img里面调用.click()

时间:2011-07-02 23:25:09

标签: php jquery ajax

我正在使用这个

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?

4 个答案:

答案 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 ../>的所有元素。

希望这会有所帮助。干杯