pagecreate はそのページの作成時に一度だけ呼び出されるため、「pagecreate」イベントではなく「pagebeforeshow」を使用します。
したがって、ページを変更するたびにイベントを取得したい場合は、'pagebeforeshow'、'pagebeforehide.'pageshow' または 'pagehide' を使用する必要があります。
ページを表示する前に UI を変更するには、 pagebeforeshowをお勧めします。:)
「選択」を前のページから新しいページに移動するために .remove() API を使用しましたか? . remove() は、親から要素を削除し、そのデータとイベントも削除します。そのため、削除後にイベント ハンドラを再定義する必要があります。
さらに、親から要素を切り離すだけの .detach() 。ただし、jquery mobile の機能強化に関していくつかの問題があります。
上記についてjsfiddleを投稿します。jsfiddle.net/cwdoh/ZaVch
シャノンによる編集...将来フィドルが削除された場合に備えて、コードは次のとおりです。
<div data-role="page" id="page1">
<div data-role="header">
<h1>Page 1</h1>
<select id="language-select">
<option>Korean</option>
<option>English</option>
<option>JavaScript :)</option>
</select>
</div>
<div data-role="content">
<a data-role="button" href="#page2">go to Page2</a>
</div>
</div>
<div data-role="page" id="page2">
<div data-role="header">
<h1>Page 2</h1>
</div>
<div data-role="content">
<a data-role="button" href="#page1">go to Page1</a>
</div>
</div>
$(document).on( "pagebeforeshow", function( e, data ) {
// move language-select from previous page
var selectMenu = data.prevPage.find( "#language-select" );
selectMenu
.remove() // remove from previous page
.appendTo( $(e.target) // append to active page
.find( "[data-role='header']" ) );
// bind event handler after append
$("#language-select").bind( "change", function() {
alert( "language-select changed" );
});
// re-build
selectMenu.selectmenu();
});