我发现了一些有点烦人的东西,我想确保我没有做任何明显的错误。我使用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中删除了对话框吗?