我有一個功能,無論是通過標準頁面加載還是通過jQuery Mobile的AJAX導航機制,我都需要在顯示頁面時調用它。目前,我的代碼沒有問題,但我覺得有一個更優雅的方式。有沒有更好的方法來附加到jQuery Mobile中的pageshow?
在我頁面的頁腳中,我有一些代碼附加到該頁面的pageshow
事件。在pageshow
上,它將關注文本框,執行警報(用於測試),然後從pageshow
事件中解除綁定。如果我沒有解除綁定,那麼如果我離開頁面然後返回到該頁面,事件將會啓動兩次。不是一個真正的大問題的焦點事件,但如果你嘗試這種與提醒你看到他們開始堆起來:P
var focusOnQuantity = function() {
$("#quantity").focus();
alert('test');
$('body').undelegate('#reportProduction', 'pageshow', focusOnQuantity);
};
// Bind to this page's pageshow event when loaded via jQuery Mobile AJAX
$('body').delegate('#reportProduction', 'pageshow', focusOnQuantity);
我也有一個全球性的JS和裏面我有一個jQuery的保護功能在哪裏在直接加載此頁面的情況下進行相同的焦點調用。
(function ($) {
$(function() {
// For direct page load
$("#quantity").focus();
});
})(jQuery);
我怎樣才能封裝代碼到1塊,使得它將在pageload
對AJAX導航工作的標準導航和pageshow
?預先感謝您的幫助。
因此,我需要在加載的「主」頁面上執行此操作...有沒有辦法讓我在子頁面中包含腳本? –
從我的結尾看來,綁定到'pageshow'事件的代碼似乎嵌套在一些其他事件處理程序中,這些事件處理程序會週期性地調用,以便綁定到'pageshow'事件添加。我可以通過更完整的代碼示例或頁面鏈接來確認。 – Jasper
我不知道問題是什麼,它現在正在工作......基本上我只是將代碼移動到正在加載的子頁面的頁腳,現在一切正在運行。我做的唯一不同,我能想到的是我從緩存中刪除頁面: $('body')。delegate('div.ui-page','pagehide',function() {( $)(this).remove(); }); –