无法在Jquery中取消绑定事件前导入事件

时间:2010-12-16 08:11:42

标签: bind jquery unbind

我有一个页面,用户可以拖放对象并将其另存为图像。当用户离开页面时,会触发事件 beforeunload 。现在,每次都会发生这种情况。我想要做的是,如果用户保存了他的工作,解除绑定事件,以便消息可能不会再次弹出。为此,我使用了 jQuery 中的 取消绑定 方法。但是,它似乎不起作用。以下是绑定和解除事件绑定的代码。

var notSaved = function()
{
   return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ;
}
$(window).bind('beforeunload', notSaved);

调用save方法后,

$(window).unbind('beforeunload', notSaved);

我在这里做错了什么? 此外,save方法实际上是一个Ajax调用。

2 个答案:

答案 0 :(得分:31)

就绑定而言,

beforeunload不能以这种方式可靠地工作。你应该原生地分配它:

window.onbeforeunload = function() {
  return 'You have not yet saved your work.Do you want to continue? Doing so, may cause loss of your work' ;
}

在你的保存方法中:

window.onbeforeunload = null;

答案 1 :(得分:0)

const windowReloadBind = function(message) {
    window.onbeforeunload = function(event) {
        //--- Your logic
        return 'your output';
    }
};

const windowReloadUnBind = function() {
    window.onbeforeunload = function() {
      return null;
    };
};