試圖將提交事件(或點擊或其他)綁定到jquery移動頁面內的元素。我想要做的是從jQuery頁面中的表單元素中獲取輸入的值,並將其存儲在cookies/localStorage中。每當我回到這個頁面,我想恢復輸入字段。如何在jQuery Mobile頁面綁定提交事件
目前我使用這個腳本結束了:因爲它似乎有可能是相同的頁面保持在DOM
$('.pageClassSelector').live('pageinit', function (e) {
$('.classSelector').submit(function() {
var q = $('.inputClassSelector').val();
// store to localStorage ...
});
// load from localStorage ...
$('.q').val(lastSearchString);
});
這種方法被證明有http://jquerymobile.com/test/docs/api/events.html
,ID選擇都不太有用。我現在的問題是,每次我導航到這個頁面時,提交事件都會被再次綁定,從而導致存儲不同的(!)值。提交事件似乎被多次解僱,而且最後的價值更有趣。
我在做什麼完全錯誤的?任何提示如何正確執行jquery mobile中的腳本?
TRY1:
我現在放在提交像這樣的pagebeforeshow事件中的事件綁定:
$('#PageId').on('pagebeforeshow', function (e) {
$('.classSelector').on('submit', function() {
var q = $('.q').val();
alert('stored: ' + q);
}
$('.q').val(lastSearchString);
}
但將被存儲的值仍是值前的最後一次,當我導航之前的頁面。第一次它應該如此。
TRY2:
這是我現在,它看起來像它做什麼我想要的。我現在選擇當前頁面並僅選擇本頁面的子窗體。 這是一個好習慣嗎?
$('div:jqmData(id="PageId")').on('pagebeforeshow', function (e) {
$(this).find('#form').on('submit', function() {
var q = $(this).find('#input').val();
localStorage.setItem("key", q);
return true;
});
lastSearchString = localStorage.getItem("key");
$(this).find('#input').val(lastSearchString);
});
你的意思是說,每次我瀏覽到同一頁面時,這個頁面應該有一個唯一的ID? – dasheddot
不,我的意思是每頁有一個唯一的ID。你可以在這裏看到JQuery手機的解剖頁面http://jquerymobile.com/demos/1.2.0/docs/pages/multipage-template.html(忽略這是最新的版本,它仍然適用於您)。 – ramsinb
好的,那是在我的應用程序的情況。我喜歡你的建議,請參閱我的編輯。 – dasheddot