この機能に関してはたくさんのトピックがありますが、それでも私はそれを機能させることができないようです。私はこの特定のケースをグーグルで検索しました、そしてたくさんのリンクが私をここにさせてくれました、しかしひどく私はそれらを働かせることができないようです。私が動作したのは次のことだけでした: http ://dl.dropbox.com/u/2238080/a/!old / z.htm しかし、ご覧のとおり、ボックスの状態は保存されません。チェックされていません。
よろしく、ルーベン
この機能に関してはたくさんのトピックがありますが、それでも私はそれを機能させることができないようです。私はこの特定のケースをグーグルで検索しました、そしてたくさんのリンクが私をここにさせてくれました、しかしひどく私はそれらを働かせることができないようです。私が動作したのは次のことだけでした: http ://dl.dropbox.com/u/2238080/a/!old / z.htm しかし、ご覧のとおり、ボックスの状態は保存されません。チェックされていません。
よろしく、ルーベン
すべてのコードを次のように変更できます。編集済みで、不要な部分を削除します。
$(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/
厳密にCookieを使用する必要がない場合は、新しいHTML5 Webストレージ(特にこの場合はsessionStorageオブジェクト)を使用する方が、Cookieに保存するよりもはるかに簡単で優れています。
http://www.w3schools.com/html/html5_webstorage.asp
ブラウザのサポートはかなり充実しています:
1つのチェックボックスだけに関心がある場合、および/またはこのためのjQuery cookieプラグインを含めたくない場合は、次の2行のコードを使用します。
//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'); });
これもCookieを使用しないため、数バイトの帯域幅を節約できます。保存された選択の有効期間を延長するには、localStorageに変更してください。
jQuery <1.6で動作するはずですが、1.6以降では、すべての外観を.attr("checked")
に変更する必要があります。.prop("checked")
編集:Cookieをチェックするためのif条件を変更しました
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 });
}
);
}
);
}