私は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)