Jquery 动态创建的图像行不会触发单击事件

Jquery 动态创建的图像行不会触发单击事件,jquery,Jquery,我有一点jquery,它向脚本发出ajax请求并返回一些json结果。 然后解析这些结果并创建一个小的图像库。 然后将其添加到我的表单中。 那一点都很好用。。。。 我的问题是,我试图触发一个事件的图像,以便当你点击一个图像,我可以做一些更多的处理。。。。但我就是不能让onclick工作 如果有人有任何建议,我将不胜感激 $('.imgSel').click(function() { alert("I WORK!!!!"); }); $("#mydiv").change(funct

我有一点jquery,它向脚本发出ajax请求并返回一些json结果。 然后解析这些结果并创建一个小的图像库。 然后将其添加到我的表单中。 那一点都很好用。。。。 我的问题是,我试图触发一个事件的图像,以便当你点击一个图像,我可以做一些更多的处理。。。。但我就是不能让onclick工作

如果有人有任何建议,我将不胜感激

  $('.imgSel').click(function()
{
    alert("I WORK!!!!");
});


$("#mydiv").change(function(){ 
{
var url = "ajax_pics.php";

$.ajax({
    type: "GET",
    url: url,
    error: function(data){
        console.log("could not get get pics");
    },
    success: function(data){
        console.log(data);
        var pics = jQuery.parseJSON( data );
    $("#imageResultsDiv").remove();
    var imageResults ='<label>Image</label><div id="currImg"></div>';


    imageResults += "<div style='clear:both'></div><ul>";
    imageResults += "<div id='imageResultsDiv'><ul>";
    for(var i in pics) 
    {
        imageResults +="<li>"; 
        imageResults +="<img class='imgSel' id='"+pics[i].filename+"' src='"+pics[i].image+"'  title='"+pics[i].summary+"'>"; 
        imageResults +="<br/><small>"+pics[i].title+"</small>"; 
        imageResults +="</li>";
    }
    imageResults +="</ul>";

    $('#picsplaceholder').before(imageResults);
    }
});
$('.imgSel')。单击(函数()
{
警惕(“我工作!!!!”);
});
$(“#mydiv”).change(function(){
{
var url=“ajax_pics.php”;
$.ajax({
键入:“获取”,
url:url,
错误:函数(数据){
log(“无法获取图片”);
},
成功:功能(数据){
控制台日志(数据);
var pics=jQuery.parseJSON(数据);
$(“#imageResultsDiv”).remove();
var-imageResults='Image';
imageResults+=“
    ”; imageResults+=“
      ”; 用于(pics中的var i) { imageResults+=“
    • ”; 图像结果+=”; imageResults+=“
      ”+图片[i]。标题+”; imageResults+=“
    • ”; } 图像结果+=“
    ”; $('picsplaceholder')。在(imageResults)之前; } });
})尝试使用实时事件:

如果我没弄错的话,您正在动态地向DOM添加元素

在这种情况下,您不能使用标准的click绑定,因为它们只对DOM中已经存在的元素进行vind

尝试使用,这是自jQuery 1.7以来的首选方法:

$('#mydiv').on("click", ".imgSel", function()
{
    alert("I WORK!!!!");
});
您必须使用要绑定到的最接近的静态元素,然后指定要将单击事件应用到的子元素。我认为在您的示例中,
$(“#mydiv”)
是最接近的静态元素

如果您碰巧使用了较旧版本的jQuery,请改用它。

有关不同绑定方法的更多详细信息,请参阅,它们是在何时添加的,以及谁在何时替换了哪些绑定方法。

Francois Wahl是对的。其工作原理是,在最近的静态“父级”上添加事件处理程序因此,当单击事件在其任何子元素上被触发时,它会传播到该父元素并触发事件处理程序


将新元素添加到DOM中时,jQuery无法在其上注册任何事件处理程序。唯一的选择是将事件处理程序附加到父元素上,并让事件向上传播。因此,无论在DOM中添加多少新元素,事件都会在父元素处触发。

不要使用live。它已被删除在jQuery 1.7中有许多缺点。它在链接文档中也说明了这一点。因为1.7
on()
是首选方法。如果您不使用jQuery 1.7,请使用
delegate
。有关更多详细信息,请参阅本文:@attikatak:非常欢迎您。很高兴您能使用它。