多个AJAX onclick调用仅适用于一个项目

时间:2011-08-22 16:31:30

标签: ajax onclick jquery

所以这是我的HTML:

<div class='delete-item' name='filetest' ></div>
<div class='delete-item' name='anothertest' ></div>
<div class='delete-item' name='coolfile' ></div>

我的JavaScript

$(".delete-item").click(function() {

    $.ajax({
        type: "GET",
        url: "delete_item.php",
        data: "name="+$(this).attr("name")+"&dir=<?php echo $encodedDirectory; ?>",
        success: function(data) {
            refreshItemList();
        }
    });

});

所以代码可以工作,但只适用于一个项目。无论我点击哪一个工作,ajax呼叫成功完成。然而,点击另一个甚至没有调用该函数(我尝试将其记录到控制台,除了第一个项目之外它甚至没有记录任何内容。)

1 个答案:

答案 0 :(得分:2)

尝试使用jQuery.live而不是bind:

$(".delete-item").live('click', function() {

当您执行$(".delete-item").click(...)时,jquery会将事件附加到页面上的所有.delete-item元素。但是在refreshItemList();中,你用新的替换它们,并且没有事件处理程序附加到新的。

jQuery.live()会在您调用时与.delete-item匹配的所有元素附加事件,并在您调用后创建.delete-item