所以这是我的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呼叫成功完成。然而,点击另一个甚至没有调用该函数(我尝试将其记录到控制台,除了第一个项目之外它甚至没有记录任何内容。)
答案 0 :(得分:2)
尝试使用jQuery.live而不是bind:
$(".delete-item").live('click', function() {
当您执行$(".delete-item").click(...)
时,jquery会将事件附加到页面上的所有.delete-item
元素。但是在refreshItemList();
中,你用新的替换它们,并且没有事件处理程序附加到新的。
jQuery.live()
会在您调用时与.delete-item
匹配的所有元素附加事件,并在您调用后创建.delete-item
。