我使用jQuery Mobile 1.2創建了一個簡單的webapp。此應用程序由主頁面index.html和名爲settings.html的第二頁面組成。 主要頁面包含頭部段打開設置頁面的按鈕:pageinit和pageshow之間的區別
<div data-role="header">
<h1>Main</h1>
<a href="settings.html">Settings</a>
</div><!-- /header -->
在設置對話框中,用戶應該能夠更改程序選項。爲了這個目的,我實現了一個函數來設置每個打開的對話框時的當前選擇:
$(document).on("pageinit", "#page-settings", function() {
// numeric text field to change the year of date (settings is an array)
$("#text-year").val(settings.year);
...
});
這工作正確爲止。
現在我看到有更多的事件,如「pagebeforeshow」和「pageshow」。但我不明白這些事件之間的區別。我測試的觸發如下:
$(document).on("pageinit", "#page-settings", function() {
alert("pageinit");
});
$(document).on("pagebeforeshow", "#page-settings", function() {
alert("pagebeforeshow");
});
$(document).on("pageshow", "#page-settings", function() {
alert("pageshow");
});
如果我點擊按鈕的主頁上,然後所有三個事件會觸發所有警報將顯示。那麼爲什麼有不同的事件呢?我應該在我的設置場景中使用哪一個?
我認爲這個過程如下: 我第一次進入我的索引頁面時,該頁面上的所有元素都被添加到DOM,然後事件pageinit和頁面顯示索引被觸發。然後,我點擊鏈接並切換到設置頁面,設置頁面的所有元素都被添加到DOM,事件pageinit和頁面顯示設置被觸發。目前爲止沒關係。 然後我回到索引頁面。由於索引元素仍然在DOM中,只有pageshow事件正在觸發。然後我再次點擊設置鏈接。設置元素也應該在DOM中,所以只有pageshow應該再次觸發。 但問題是,每次更改頁面時都會觸發所有事件。所以問題是:爲什麼會有不同的事件?我應該在哪裏放置文本框的填充或按鈕點擊的觸發器?
OK,我理解的差異。 – altralaser 2013-03-21 21:26:23