非常感謝您的閱讀。
我有一個頁面數據集(從SPRY XML數據集創建)跨越多個頁面。
我使用jquery cookies https://github.com/carhartl/jquery-cookie來保存哪些複選框被選中,因爲選中的複選框在頁面之間丟失。我已經使用 下面的代碼來設置的Cookie(從計算器柱)複選框從cookie中檢查動態創建的複選框數組(jquery)
$(document).ready(function(){
// find the div named books containg rows and a checkbox in the end
$("#books").on("click",function(){
$(":checkbox:checked.chkbCsm").each(function() {//alert("test");
var mycookie = $.cookie($(this).attr('value'));
if (mycookie && mycookie == "true") {
$(this).prop('checked', mycookie);
}
});
$(":checkbox:checked.chkbCsm").change(function() {
$.cookie($(this).attr("value"), $(this).prop('checked'), {
path: '/',
expires: 365
})
});
});
擠包。對之內,因爲是動態創建的表。餅乾設置正確。
我已經創建了以下代碼片段,通過從 cookie數組中讀取值來恢復複選框。
$(document).ready(function() {
var cookies = get_cookies_array();
var temp = [];
// keep only cookies relevant in temp
for(var name in cookies) {
if (!isNaN(name) && cookies[name]=="true") {
temp.push(name);
}
}
//restore all cookies from temp array
for(i=0 ; i<temp.length ; i++) {
var text=temp[i];
$('input[value='+text+']').prop('checked', true);
}
});//document ready
代碼通常工作,但有一個問題。
假設一個複選框被選中,cookie被設置,然後你移動到下一頁,然後你回退 。
Cookie將正確復原複選框。但是,如果取消選中 複選框,點擊將被忽略,並且cookie仍被認爲包含複選框。 如果您再次選中取消選中,則cookie正確設置爲false(即取消選中)。
這意味着,可能第一次.change()函數沒有被觸發,這肯定是不需要的。
另外我明白,如果 複選框更改狀態以編程方式.change()不觸發。
我嘗試了幾條路線(把.triggerHandler(「更改」);旁邊.prop()) 和研究Need checkbox change event to respond to change of checked state done programmatically和Why isn't my checkbox change event triggered?,但沒有解決我的問題。
任何想法歡迎如何解決這個問題。 非常感謝