Мое приложение имеет две панели в качестве основного макета, поэтому все дочерние страницы будут иметь эти две панели. Теперь я хочу зарегистрировать событие swipe для всех моих страниц в приложении, чтобы пользователь мог получить доступ к этим двум панелям из любого места. Я создал эту функцию здесь, чтобы я мог просто вызвать ее для регистрации из разных мест:
function registerSwipeEvents() {
//panel swipe from left and right for categories, favs.
$(document).on("swipeleft swiperight", '[data-role=page]', function (e) {
// We check if there is no open panel on the page because otherwise
// a swipe to close the left panel would also open the right panel.
// We do this by checking the data that the framework stores on the page element (panel: open).
if ($.mobile.activePage.jqmData("panel") !== "open") {
if (e.type === "swipeleft") {
$(".right-panel").panel("open");
} else if (e.type === "swiperight") {
$(".left-panel").panel("open");
}
}
});
}
Я пробовал вызывать эту функцию из pageinit (запускает скрипт только один раз), pagebeforeshow и pageshow (всегда запускается) следующим образом:
$('#HomePage').on('pageshow', function () {
getFavouritesFromClient();
});
Но событие не работает для всех страниц, когда я перехожу с одной страницы на другую во второй раз! Возможно, я неправильно использую события, но лучшее, что работало до сих пор для первого раунда навигации, — это pageshow.