У меня есть функция, которую мне нужно вызывать всякий раз, когда отображается страница, будь то при стандартной загрузке страницы или с помощью механизма навигации JJuery Mobile AJAX. В настоящее время мой код работает без проблем, но я чувствую, что есть более элегантный способ.
В нижней части моей страницы есть код, который присоединяется к событию 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
для стандартной навигации и pageshow
для навигации AJAX? Заранее спасибо за любую помощь.