1

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

我有一个 mainpage.html,它调用了一个对话框页面.html,它被建模为一个对话框。对话页面有一个 <div data-role="page" id="dialogpage" data-dialog="true">。

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”被多次打印。但这是否意味着我需要取消绑定对话框页面中的所有事件?

难道我做错了什么?

4

1 回答 1

0

由于您将事件与 on 绑定,因此我将取消绑定它们。我还要指定过滤器(#dialogpage):

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

更新:

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

于 2014-05-09T07:10:31.723 回答