2012-12-18 81 views
5

關於此功能有很多主題,但我似乎無法得到它的工作。我在這個特定的案例上搜索了一些鏈接,並且有一些鏈接讓我在這裏,但是我似乎無法讓他們工作。我做的唯一的工作是以下幾點: http://dl.dropbox.com/u/2238080/a/!old/z.htm 但正如你所看到的,它沒有存儲框的狀態是未選中的。(jQuery)在cookie中單擊時保存複選框狀態

問候, 魯

+3

Dropbox鏈接給出了404。像JSFiddle這樣的東西對於那些後來出現的人會有幫助。 – Ojen

回答

12

您可以將所有代碼更改爲:EDITED刪除不需要的部分。

$(document).ready(function(){ 
    // read the current/previous setting 
    $("input.box[type=checkbox]").each(function() { 
     var name = $(this).attr('name'); 
     if ($.cookie(name) && $.cookie(name) == "true") { 
      $(this).prop('checked', $.cookie(name)); 
     } 
    }); 
    // event management 
    $("input.box[type=checkbox]").change(function() { 
     var name = $(this).attr("name"); 
     $.cookie(name, $(this).prop('checked'), { 
      path: '/', 
      expires: 365 
     }); 
    }); 
}); 

包括擺脫這一切:

$(document).ready(function(){ 
    remember("[name=1]"); 
}); 
... 

編輯:更簡潔的版本:

$("input.box").each(function() { 
    var mycookie = $.cookie($(this).attr('name')); 
    if (mycookie && mycookie == "true") { 
     $(this).prop('checked', mycookie); 
    } 
}); 
$("input.box").change(function() { 
    $.cookie($(this).attr("name"), $(this).prop('checked'), { 
     path: '/', 
     expires: 365 
    }); 
}); 

工作示例:http://jsfiddle.net/R73vy/

+0

更好,謝謝! – user1913435

+2

我覺得值得一提的是,那些偶然發現這個問題的人會像我一樣尋找答案,因爲我花了一點時間才意識到這一點(而這可能只是我自己的愚蠢,對此我表示歉意),但你需要使用jquery.cookie插件才能正常工作。我發現它在這個地址:https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js – Skryn

+0

@Skryn公平點,它在小提琴作爲外部資源,但沒有具體叫出 - 並且問題中的鏈接現在看起來無效。 –

1

應該用jQuery < 1.6工作,但首先是1.6,你應該的.attr("checked")每一次出場改變.prop("checked")

編輯:改變了,如果條件檢查的cookie

 function remember(selector){ 
      $(selector).each(
       function(){ 
        var name = $(this).attr('name'); 
        if($.cookie(name) && $.cookie(name)=="true"){ 
         $(this).prop('checked', true); 
        } else { 
         $(this).prop('checked', false) 
        } 
        $(this).change(
         function(){ 
          $.cookie(name, $(this).prop('checked'), { path: '/', expires: 365 }); 
         } 
        ); 
       } 
      ); 
     } 
+0

非常感謝! – user1913435

1

如果你在一個複選框只是有興趣AND/OR你不想爲此包括jQuery cookie插件,這裏有兩行代碼:

//on page load set the checkbox to stored value or default to true 
$('#turbo').prop('checked' , (typeof sessionStorage.turbo !== 'undefined') ? (sessionStorage.turbo=='true') : true); 
//when checkbox is updated, update stored value 
$('#turbo').change(function() { sessionStorage.turbo = $(this).prop('checked'); }); 

這也不使用c ookies可以節省幾個字節的帶寬。更改爲localStorage以延長保存的選擇的壽命。