Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带live的jquery问题_Javascript_Jquery - Fatal编程技术网

Javascript 带live的jquery问题

Javascript 带live的jquery问题,javascript,jquery,Javascript,Jquery,我有这样的代码: $(".delete").live('click', function() { var commentContainer = $(this).parent(); var id = $(this).attr("id"); var string = 'id='+ id ; $.ajax({ url: "<?php echo site_url('messages/delete') ?>"

我有这样的代码:

$(".delete").live('click', function() {    
    var commentContainer = $(this).parent();
    var id = $(this).attr("id");            
    var string = 'id='+ id ;
    $.ajax({   
        url: "<?php echo site_url('messages/delete') ?>",
        type: "POST",
        data: string,
        cache: false,
        success: function(){
            commentContainer.slideUp('600', function() {$(this).remove();
                $('.messages').fadeOut('2000', function(){$(this).remove();
                    $('#messages').load("<?php echo site_url('messages/show') ?>", function(){
                        $(this).fadeIn('2000')
                    });
                }); 
            });             
        } 
    });
    return false;
});
$('.delete').confirm(
{
    msg: 'You are about to delete this message. Are you sure?<br>',
    buttons: {
    separator: ' - '
    }
});//message deleting    
$(“.delete”).live('click',function(){
var commentContainer=$(this.parent();
var id=$(this.attr(“id”);
变量字符串='id='+id;
$.ajax({
url:“”,
类型:“POST”,
数据:字符串,
cache:false,
成功:函数(){
slideUp('600',function(){$(this.remove();
$('.messages').fadeOut('2000',function(){$(this.remove();
$('#messages').load(“,function(){
$(this.fadeIn('2000'))
});
}); 
});             
} 
});
返回false;
});
$('.delete')。请确认(
{
msg:“您将要删除此邮件。确定吗?
”, 按钮:{ 分隔符:'-' } });//消息删除
当它第一次被激活时(当我试图删除消息时,会询问问题,如果我说是,消息会被删除)。当数据再次显示时,当我单击“删除”时,它是在不询问的情况下删除消息。问题出在哪里?

很明显,“确认”插件没有在
live
上运行,而是在使用
bind

添加元素时,它没有确认绑定,但有活动绑定,因此它只会删除


加载新内容后,您可以尝试在success函数中重新调用确认插件,修改插件,自己手动执行,或者找到一个经过更好思考的新插件。

看起来您必须在每次ajax加载后注册确认插件,因为它没有在内部使用live

最简单的方法是将代码移动到自己的函数中,并在加载回调和页面加载中调用该函数

function deleteConfirmSetup() {
   $('.delete').confirm(
   {
        msg: 'You are about to delete this message. Are you sure?<br>',
        buttons: {
            separator: ' - '
        }
    });//message deleting
}   

$(".delete").live('click', function() {    
    $.ajax({   
       url: "<?php echo site_url('messages/delete') ?>",
       type: "POST",
       data: string,
       cache: false,
       success: function(){
          commentContainer.slideUp('600', function() {$(this).remove();
             $('.messages').fadeOut('2000', function(){$(this).remove();
                $('#messages').load("<?php echo site_url('messages/show') ?>", function(){
                    $(this).fadeIn('2000');
                    deleteConfirmSetup(); // Add function call here
                });
            }); 
        });             
    } 
  });
  return false;
});
deleteConfirmSetup(); // Also call function here to setup initially
函数deleteConfirmSetup(){
$('.delete')。请确认(
{
msg:“您将要删除此邮件。确定吗?
”, 按钮:{ 分隔符:'-' } });//消息删除 } $(“.delete”).live('click',function(){ $.ajax({ url:“”, 类型:“POST”, 数据:字符串, cache:false, 成功:函数(){ slideUp('600',function(){$(this.remove(); $('.messages').fadeOut('2000',function(){$(this.remove(); $('#messages').load(“,function(){ $(本).fadeIn('2000'); deleteConfirmSetup();//在此处添加函数调用 }); }); }); } }); 返回false; }); deleteConfirmSetup();//也可以在此处调用函数进行初始设置
我还没有使用确认插件,但要想让这项工作如你所愿,一个稍微令人恼火的黑客可能会这样做:

var bindBackup = jQuery.fn.bind;
jQuery.fn.bind = jQuery.fn.live;
在运行
之前,请确认()。然后再恢复它:

jQuery.fn.bind = bindBackup;

我还没有尝试过,但是
live
函数在它的源代码中实现了
bind
,所以我看不出它不起作用的原因。

如果你可以发布一个链接或创建一个jsfiddle,那么在我使用codeigniter和本地主机的时候,这将是非常有用的。我是JS和JQ的新手,现在我不知道该做什么,我有点困惑。创建如下函数:`function delete_message(){$('.delete')。确认({msg:'您将要删除此消息。是否确定?
',按钮:{separator:'-'}}});//message deleting}`并将onClick=“delete_message();”添加到a标记(用于删除),但现在它正在毫无疑问地删除???@Sasha我编辑了我的答案,以显示我的意思。(我去掉了你的一部分代码,因为它很长,所以不要复制和粘贴整个代码)别担心。。。刚试过,它就不起作用了,因为
confirm
插件没有直接从选择器应用
bind
。我会把这个放在这里作为参考,相信没有人会投反对票!我做错了什么事。我在一开始就添加了这个,现在有一个问题,但是如果我单击yes或no,什么都不会发生???即使是我介绍这个的方式也是一种轻微的攻击,要让它工作起来需要更多的攻击。我建议使用@Richard的答案而不是这个。