我发现了一些有点烦人的东西,并且想要确保我没有做任何明显错误的事情。 我正在使用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');
});
这似乎使“页面显示对话页”不会被多次打印。但这是否意味着我需要解除对话框页面中所有事件的绑定?
我做错了吗?
答案 0 :(得分:0)
由于您将事件与on绑定,我将解除它们的绑定。我还会指定过滤器(#dialogpage):
$(document).off('pageshow','#dialogpage');
$(document).off('pagehide','#dialogpage');
更新:
哦,你是否从dom中删除了对话框?