我发现一些有点烦人的东西,并想确保我没有做任何公然错误的事情。我正在使用 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”被多次打印。但这是否意味着我需要取消绑定对话框页面中的所有事件?
难道我做错了什么?