JQuery Mobile - невозможно привязать pagebeforechange к id страницы?
Я мог только привязывать pagebeforechange ко всему мобильному документу jquery, а не к отдельной странице. Может ли кто-нибудь объяснить, почему это не работает?
Ответы
Ответ 1
$("div[data-role='page']").live( "pagebeforehide", function( event ) {
alert('This alert should trigger before Next Page Here is shown?');
});
(подробнее см. ссылку )
вы также можете использовать bind вместо live, надеюсь, что это помогло.
Ответ 2
С jQuery Mobile - я уверен, что вы не привязываетесь к документу, а к свойству pageinit.
Привязка к документу создаст проблемы... имейте в виду, что эта ссылка для работы над #home снова вам понадобится еще один прослушиватель событий для beforepageshow или что вы еще до того, как страница будет показана снова.
Этот документ очень полезен...
Ответ 3
Селектор для страниц JQM:
$('.ui-page')
Добавление прослушивателя событий на все страницы документа может быть выполнено как:
$(document).delegate(".ui-page","pagebeforehide", function(evt, ui){
alert('pagebeforehide fired');
}
С помощью делегат:
Примечание: использование привязки вместо delegate НЕ будет работать для вышеупомянутого селектора, так как класс ui-страницы добавляется только при создании страницы.
В целях использования привязки используйте следующий селектор:
$("div[data-role='page']")
И добавьте прослушиватель событий (только после того, как документ готов или тело загружено):
$("div[data-role='page']").bind("pagebeforehide", function(evt, ui{
alert('pagebeforehide fired');
}
Скрипт с использованием bind:
Я также рекомендую использовать событие mobileinit, а документ готов!
Ответ 4
У меня такая же проблема, но у меня, по крайней мере, есть обход для вас. Предупреждение: это глупый, ужасный код. Но он выполняет эту работу.
window.doubleLoadPreventer = 0;
$(document).bind('pagebeforechange', function(e, data){
if ( window.doubleLoadPreventer === 1 ) {
window.doubleLoadPreventer = 0;
return;
} else {
window.doubleLoadPreventer = 1;
}
//your normal event handler code here
}