我正在使用 jQuery Mobile 选项allowSamePageTransition
,它使我能够从
页面 A > 页面 A > 页面 A ...
我需要它来允许浏览项目目录。我的问题是,这些项目需要某种形式的交互,我曾经将交互绑定附加到document
,因为它是在生成受影响的元素之前设置的。
但是,一遍又一遍地重新加载同一个页面会在每次重新加载时重新绑定我的事件处理程序。
我的第一个想法是.off
在页面被隐藏但重新加载页面时使用,将在显示的同一页面上#foo
触发,因此所有绑定都设置为pagehide
$(document).on("pagebeforeshow.foo_events", "#foo", function(e) {
// bind when shown
});
将被先前#foo
的隐藏再次解除绑定
$(document).on("pagehide", "#foo", function (e) {
$(this).off(".foo_events");
// removes bindings on #foo being hidden AND shown
});
我想出的唯一解决方案是document
用类涂抹,我不喜欢这样做:
priv.setBindings = function (param) {
var doc = $(document);
doc
.filter(function() { return $(this).is(".e_gallery") !== true; })
.on("pagebeforeshow.gallery", param.pageId, function (e) {
doc.addClass(".e_gallery");
// run stuff
});
};
但我不喜欢将课程附加到dom。
问题:
有没有办法防止$(document)
在不切换类的情况下一遍又一遍地访问同一页面时设置多个事件绑定?