jquery委托不处理列表项

jquery委托不处理列表项,jquery,Jquery,我使用的是较旧版本的jquery(1.6.2),似乎无法让委托正常工作。我有一个列表,我试图在单击事件中使用委托,但在重新加载列表后失败 这是我目前的代码: $(".image_result").delegate("li", "click", function() { //$('.image_result li').click(function() { var imgInfo = $(this).attr('id').split(':'); if(confirm('Are y

我使用的是较旧版本的jquery(1.6.2),似乎无法让委托正常工作。我有一个列表,我试图在单击事件中使用委托,但在重新加载列表后失败

这是我目前的代码:

$(".image_result").delegate("li", "click", function() {

//$('.image_result li').click(function() {
    var imgInfo = $(this).attr('id').split(':');

    if(confirm('Are you sure you want to delete this image?')) {
        $.post('delete_image.php?image_id=' + imgInfo[0] + '&user_id=' + imgInfo[1], function(data) {

            if (data.st) {
                var resp = data.html.split("|");

                $('#imageStats').html(resp[0]);
                $('#imageTable').html(resp[1]);
            }
            else {
                alert("Yikes, something went wrong");
            }
        }, "json");
    }
});
imageTable div现在保存新的列表项(image\u结果)

我遗漏了什么?

jQuery对象中的
.delegate()
的关键是不能销毁/替换该项(在本例中为
.image\u result
。这样做会杀死jQuery事件处理程序。在jQuery对象中使用的选择器必须是静态的(不会被销毁或替换)

在您的情况下,假设
.image\u result
#imageTable
的子项,您可能可以使用以下选项:

$("#imageTable").delegate(".image_result li", "click", function() {...});

因为
#imageTable
没有被替换,所以它的事件处理程序能够保存对子对象的更改,并且选择器作为参数传递给
.delegate()
在右侧的
li
对象中设置零。

当您重新加载列表时,您是否也可以发布HTML结构,是清除并重新设置lis,还是销毁并重新创建.image\u结果元素?这就是问题所在。在父div上设置委托有效。我没有意识到这一点。非常感谢……我了解到了每天做点什么:)