是否有必要在关闭对话框后取消页面显示事件的绑定?



我发现了一些有点烦人的东西,我想确保我没有做任何明显的错误。我使用jquery-mobile 1.4.

我有一个mainpage.html调用dialogpage.html建模为一个对话框。dialogpage有一个

对话页也有一个pageshow事件附加到div页,像这样

$(document).on('pageshow', '#dialogpage', function(event) {
  console.log('pageshow dialogpage');
});

我发现,每次我打开这个对话页,一个额外的pageshow事件被调用。我的意思是,当我第一次打开对话框时,控制台打印"pageshow dialogpage"一次。第二次打开对话框时,它打印了两次。第三次打开页面打印三次,等等

每次我打开页面时,似乎pageshow事件一次又一次地被附加。在某种意义上,这是有道理的,但似乎相当恼人的处理。

我的解决方案是添加一个unbind事件,像这样:

$(document).on('pagehide', '#dialogpage', function(event) {
    console.log('pagehide dialogpage');
    $(document).unbind('pageshow');
    $(document).unbind('pagehide');
  });

这似乎使"pageshow dialogpage"不会被多次打印。但这是否意味着我需要取消绑定对话框页面中的所有事件?

我做错了什么吗?

既然你用on来绑定事件,我就用off来取消它们的绑定。我还将指定过滤器(#dialogpage):

$(document).off('pageshow','#dialogpage');
$(document).off('pagehide','#dialogpage');
更新:

哦,你从dom中删除了对话框吗?

相关内容

  • 没有找到相关文章

最新更新