jquery插件确认与live()一起使用

时间:2014-07-30 11:05:50

标签: javascript jquery

我有一些代码。当我点击按钮时,此代码返回确认窗口。一切工作。

但是,当我想点击按钮,用ajax加载时,确认窗口不会返回。

请帮我修复此代码。

 $('.button').confirmOn({
            questionText: 'Do you have a car?',
            textYes: 'Yes',
            textNo: 'No'
        },'click', function(e, confirmed) {
            if(confirmed){
               alert('You clicked "Yes"');
            }
        });

1 个答案:

答案 0 :(得分:0)

我不知道你是如何编写ajax函数的,但我假设你正在使用jQuery。如果是,则可以将函数移动到某个包装函数中,例如。

function attachConfirmation() {
  $('.button').confirmOn({
        questionText: 'Do you have a car?',
        textYes: 'Yes',
        textNo: 'No'
    },'click', function(e, confirmed) {
        if(confirmed){
           alert('You clicked "Yes"');
        }
    });
}

并在页面加载时为“.button”类调用此函数,该类未被ajax加载。

再次在ajax成功时调用此函数,以便它将附加由ajax调用呈现的“.button”。

但是在这种方法中你需要小心,因为你再次在ajax上成功调用这个函数它将在先前渲染的“.button”上附加2个事件。

要解决此问题,您可以先删除已经附加的内容,然后再以ajax成功附加它。例如。

$.ajax({
   url: "some url",
   success: function() {
     $(".button").off("click");
     attachConfirmation();
   }
})
希望这对你有所帮助。