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

时间:2014-05-09 06:47:21

标签: jquery jquery-mobile jquery-mobile-pageshow jquery-mobile-dialog

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

我有一个mainpage.html,它将dialogpage.html称为对话框。该对话框有一个< div data-role =“page”id =“dialogpage”data-dialog =“true”&gt ;.

该对话框还有一个附加到div页面的pageshow事件,如此

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

我发现每次打开此对话框时,都会调用另一个pageshow事件。 我的意思是,当我第一次打开对话框时,控制台会打印一次“pageshow对话框”。第二次打开对话框时,它会打印两次。页面的第三个打开三次打印等

每次打开页面时,好像每次都会反复附加pageshow事件。从某种意义上说,这是有道理的,但处理起来似乎很烦人。

我的解决方案是添加一个unbind事件,如下所示:

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

这似乎使“页面显示对话页”不会被多次打印。但这是否意味着我需要解除对话框页面中所有事件的绑定?

我做错了吗?

1 个答案:

答案 0 :(得分:0)

由于您将事件与on绑定,我将解除它们的绑定。我还会指定过滤器(#dialogpage):

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

更新:

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