は私がpanelTrans結合このイベントの中から、私の機能を発射しようとしています:無限ループを作成せずにイベントトリガ関数をイベントハンドラから起動する方法はありますか?
問題がある$(document).on("pagebeforechange", function(e, data) {
console.log("fired");
// cond
if (data.options.pageContainer != $.mobile.pageContainer) {
if (self.options.$infinity != "block") {
// set a blocker to avoid infinite loop
self.options.$infinity = "block"
// stop JQM
e.preventDefault();
e.stopPropagation();
// fire panel transition
self.panelTrans(e, data);
}
}
});
は、panelTrans機能は別のpagebeforechangeイベントをトリガchangePageを発射するので、私はinifinteを作成していますループ。私はinifiteループオプションでこれをブロックしようとしています。しかし、これはまだ十分速くブロックしていないようですが、私はまだいくつかの "反復/ループ" =コンソールが3-5の "ロギング"を記録しています。 if-statementの外側にpreventDefaultを移動すると、すべての動作が妨げられ、これも動作しません。
質問:
これを処理するためのより良い方法はありますか? changePageオプションを上書きしてJquery Mobileが実行されるように変更されたchangePageを起動するように移行する前に、changePageをインターセプトする必要があります。
ありがとうございました!
なぜchangePageイベントを発生させるのですか?機能の実行(オプションの変更など)が完了すると、イベントはとにかく起動されますか? – ManseUK
@ManseUK:最初はこれを試しましたが、panelTransがオプションを変更するまでにJQMページチェンジが既に開始されていましたので、新しいものを起動する必要があります。 – frequent