我试图用AJAX更新数据库中的单个记录。一切都很好,但是当返回结果时,它看起来很好,但是如果再次单击a.update(对于返回的元素),我将打开href(因此第二次attr()由于某种原因不起作用)。我是jQuery和ajax的新手:)
// Update Single Item
$('li a.update').click(function () {
updateURL = $(this).attr("href");
$(this).attr("href", "#");
theContainer = $(this).parents('li');
$.ajax({
type: "GET",
dataType: 'json',
url: updateURL,
async: false,
success: function(data){
theContainer.replaceWith(data.html).fadeIn(300);
}
});
return false;
});
注。List元素是用PHP生成的。当我请求单个<li>
元素时,我使用完全相同的模板生成它(默认情况下,所有内容都使用foreach循环打印,之后AJAX请求返回带有<li>...</li>
的JSON)
您可以使用live
方法将事件监听器附加到所有匹配的元素,而不管它们是否已经在DOM中:
$('li a.update').live("click", function() {
//Your code
});
您附加事件侦听器的方式将仅将其附加到DOM中当前的元素,并且当您通过AJAX添加新元素时,它们不会接收事件侦听器。