我想從這個事件中綁定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功能觸發一個changePage,從而引發另一pagebeforechange事件,所以我創建一個inifinte循環。我試圖用inifite循環選項來阻止它。然而,這似乎並沒有阻止「快速」,因爲我仍然得到幾個「迭代/循環」=控制檯正在記錄3-5「被解僱」。如果我在if語句之外移動preventDefault,它會阻止所有內容,這也不起作用。
問題:
有沒有更好的方法來處理這個問題?我需要在Jquery Mobile之前截獲changePage,以便覆蓋changePage選項並激活我的修改的changePage以供Jquery Mobile執行。
感謝您的幫助!
爲什麼你要觸發'changePage'事件?如果你完成你的功能的執行(即改變選項),那麼該事件將被解僱? – ManseUK 2012-03-19 15:25:36
@ManseUK:我在開始時嘗試了這個,但是在panelTrans通過修改選項的時候,JQM pagechange已經被觸發了,所以我需要激活一個新的。 – frequent 2012-03-19 16:33:24