Контейнер для мобильных страниц: не работает
$(":mobile-pagecontainer")
не работает. Я должен использовать $(document)
, Что-то не так со следующим кодом?
<div data-role="page" id="page1">
<div data-role="header" >
<h1>Page 1</h1>
</div>
<div role="main" class="ui-content">
This is Page1.
<a id="gotoPage2" href="#page2" class="ui-btn ui-corner-all ui-shadow ui-btn-a">Go to Page 2</a>
<script>
// not working
$( ":mobile-pagecontainer").on( "pagecontainerhide", function( event, ui ) {
alert( "page hide ");
});
// working
$( document).on( "pagecontainerhide", function( event, ui ) {
alert( "page hide " );
});
</script>
</div>
</page>
<page data-role="page" id="page2">
....
</page>
Но это работает для изменения страницы следующим образом:
$(":mobile-pagecontainer").pagecontainer("change", "#page2", { } );
Благодарю.
1 ответ
Решение
$(":mobile-pagecontainer")
это селектор, который относится к оболочке всех страниц, внутренних или внешних. По умолчанию body
является :mobile-pagecontainer
а также .pagecontainer()
это виджет, используемый для отправки специальных событий jQuery Mobile и для навигации.
События jQuery Mobile достигают document
так что вы можете использовать для захвата этих событий.
$(document).on("pagecontainershow", function (e, data) {
console.log(data.toPage); /* current active page */
console.log(data.prevPage); /* previous page */
});
Если вы хотите прикрепить события к pageconatiner, вы должны обернуть их в .ready()
чтобы заставить их работать.
$(function () {
$(":mobile-pagecontainer").on("pagecontainerhide", function (e, data) {
console.log(data.toPage); /* page navigating to */
console.log(data.prevPage); /* page that was just hidden */
});
});
Можно также использовать виджет .pagecontainer()
,
$(":mobile-pagecontainer").pagecontainer({
hide: function (e, data) {
/* code */
},
show: function (e, data) {
/* code */
}
});