2012-12-18 30 views
5

Bu fonksiyonla ilgili birçok konu var, ancak çalışmayı göze alamıyorum. Bu özel vakaya baktım ve bir sürü bağlantı beni buraya getirdi, ama işlerini yapamayacağım kadar garip bir şekilde. Çalıştığım tek şey şu oldu: http://dl.dropbox.com/u/2238080/a/!old/z.htm ancak görebileceğiniz gibi kutunun durumunu kaydetmiyor. çerez(jQuery) Onay kutusuna tıklayın onay kutusuna tıklayın

 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 }); 
         } 
        ); 
       } 
      ); 
     } 
kontrol etmek için ise durumun Değişti:
+3

Bu Dropbox bağlantısı bir 404 veriyor. JSFiddle gibi bir şey daha sonra gelenler için yararlı olurdu. – Ojen

cevap

12

TÜM TUŞLARINIZI DEĞİŞTİRMEK İÇİN YER ALMAKTADIR: YANLIŞ bir parçayı kaldırmak için DÜZENLENMİŞ.

$(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 
     }); 
    }); 
}); 

bütün bu kurtulmak dahil:

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

DÜZENLEME: Daha az ayrıntılı versiyon:

$("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 
    }); 
}); 

çalışma örneği: http://jsfiddle.net/R73vy/

+0

Daha da iyisi, teşekkürler! – user1913435

+2

Bunun gibi bir cevabı arayan insanlara bahsetmeye değer bir şeymişim gibi hissediyorum, sanki bunu farketmek için biraz araştırma yaptım (ve bu sadece kendi aptallığım olabilir, bunun için özür diliyorum), ama Bunun çalışması için jquery.cookie eklentisine ihtiyacınız olacak. Bu adreste şu adresi buldum: https://raw.github.com/carhartl/jquery-cookie/master/jquery.cookie.js – Skryn

+0

@Skryn Fuar noktası, dış kaynak olarak kemanın içinde, ancak özel olarak adlandırılmadı - ve sorudaki bağlantı artık geçersiz görünüyor. –

1

Bu jQuery < 1.6 ile çalışmalıdır ancak 1.6 ile başlayan Eğer .prop("checked")

EDIT'e .attr("checked") her görünümünü değiştirmek gerekir

Selamlar, Ruben

+0

Çok teşekkür ederim! – user1913435

1

VE/VEYA

//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'); }); 

Bu aynı zamanda c kullanmaz: Bunun için jQuery çerez eklentisi dahil etmek istemiyoruz, burada iki kod satırlarını var Çerezler, bir çift baytlık bant genişliği tasarrufu sağlar. Kaydedilen seçimin ömrünü uzatmak için localStorage olarak değiştirin.

İlgili konular