我有一个PHP应用程序,在其中一个页面上有一个删除功能。我允许用户通过点击标签从他们的个人资料中删除标签。用户点击代码后,之前显示代码的HTML中的内容区域会使用新的代码集进行更新。
现在问题是,从标签列表中,用户第一次点击标签时,它就会被删除。如果用户现在点击另一个标签(来自刷新区域),则没有任何反应。
$("a.single_tag").click(function(){
the_id = $(this).attr('id');
$.ajax({
type: "POST",
data: "data="+the_id,
url: "<?php echo site_url('user/deletetag/');?>/",
success: function(msg)
{
$("#current_tags").fadeIn("slow");
$("#current_tags").html(msg);
}
});
由于
答案 0 :(得分:5)
不要使用.click()
,而是需要.live('click', func)
,如下所示:
$("a.single_tag").live('click', function() {
当您使用.click()
时,您将click
处理程序绑定到这些元素,但是当内容被替换时,没有处理程序的新元素就在那里。使用.live()
,当click
事件冒泡到document
并执行时,它会监听...当页面加载或稍后添加时,元素是否存在,这无关紧要。 。修正你的问题:)
答案 1 :(得分:0)
你需要在函数中抛出那块绑定代码,并在成功回调中调用它,或者只更新更新标签的HTML(即返回要删除的id,或者要追加的html块) ,而不是重新显示整个块。)
更新内容时,新.click
代码中不存在a
绑定。
编辑:@Nick Craver的解决方案要好得多。
答案 2 :(得分:0)
这是因为您刚从服务器收到的新html标签在点击时没有绑定到它们的“删除”功能。