JSのスニペットは、ページが完全にロードされた後、JQMがUIのすべての変更(リストビュー、ボタンなど)を処理した後に一度だけ実行しようとしています。私はそれがそのページでのみ実行され、その後のページでは実行されません。私が最初に試した何 jQuery Mobile - pageshowイベントを1回だけ実行する
は、この関数は、現在のページのdivに取り付けられており、それ以降のページが表示されるたびに実行されます問題があるpageshowの<script>
$('[data-role=page]').live("pageshow", function() {
alert("Ready!");
});
</script>
ました。しかし、私はこれを一度だけ実行して、そのJSスニペットが含まれているページのみにします。
実際に機能を追加せずに、pageshowイベントを聴く方法はありますか?
私はそれを行うことができた唯一の方法は、次のように結合し、バインド解除によってだった:
<script>
$('[data-role=page]').bind("pageshow.test", testfun);
function testfun() {
alert("Ready!");
$('[data-role=page]').unbind("pageshow.test", testfun);
}
</script>
しかし、そうするよりエレガントな方法は何ですか?
1ページだけにバインドするには、 'data-role'属性が' page'に設定されているすべての要素を選択する '[data-role = page]'ではなくセレクタでIDを使用します: '$( ' my-page ')。bind(' pageinit '、...)。 – Jasper