いくつかのページをロードするjQueryMobileWebアプリを作成しています。
たとえば、a.html私のメインページです。、、 ...、b1.htmlと呼ばれる場合があります(ユーザーはボタンの1つをクリックできます)。(ページはjQuery Mobileのajaxナビゲーション機能で読み込まれています)b2.htmlb100.html
b[i].htmlそして、各ページにはいくつかのイベントがありid、すべてのページで同じものがたくさんありb[i].htmlます。ただし、重要なのは、いつでも、そのうちの1つだけがDOMに含まれている可能性があるということです。idしたがって、競合などは発生しません。
問題
問題は、イベントの競合です。a.htmlユーザーがから戻るとb[i].html、HTMLは削除されますが、イベントは残ります。これは、最初にに移動しb[i].html、次にに戻ってからにa.html移動すると、多くの問題を引き起こしb[j].htmlます。つまり、b[j].html正しく動作しません... :(
私が試したこと
a.htmlすべてのイベントを削除するために、これを入れました。
$("#mainpage").off("pagebeforeshow").on("pagebeforeshow",function() {
$("*").not("#mainpage").off();
//Other initialization codes...
});
しかし、問題は解決されていません...
(mainpageのIDdata-role="page"ですa.html)
例
たとえば、私はそれぞれにこれを持っていますb[i].html:
$(window).resize(function () {
alert("Resized");
});
最初(でa.html)、ウィンドウのサイズを変更してもアラートは表示されませんが、にアクセスb[i].htmlしてから戻った後a.html、そのコード行を使用してもウィンドウのサイズを変更するとアラートが表示されます(私が試したこと部。)...
a.htmlでは、ユーザーがから戻ってきたときにこれらのイベントハンドラーを削除するにはどうすればよいb[i].htmlですか?