jQuery( fiddle )を使用して簡単なカスタムチェックボックスを作成しようとしています。
実際のチェックボックスをオン/オフにしない理由がわかりません。Idsセレクターは正しく渡されるため、リアルタイム値も正しく渡されます。
関連するhtml:
<div id="corpo">
<div id="checkoptions">
<div><label>Option 1 <input type="checkbox" id="option1" checked></label></div>
</div>
</div>
関連するJavaScript:
// custom checkboxes
$('#corpo input[type=checkbox]').each(function(){
var checkbox = $(this), checkid = checkbox.attr('id'),
checked = '', content = '✗';
if(checkbox.is(':checked')){ var checked = ' checked', content = '✓'; }
checkbox.hide()
.after('<div class="checkbox'+checked+'" id="c-'+checkid+'"><span>'+content+'</span></div>');
});
// update custom checkboxes values
$('#corpo').on('click','.checkbox',function(){
var fakeCheckbox = $(this),
realID = fakeCheckbox.attr('id').replace('c-',''),
realCheckbox = $('#'+realID), checked = realCheckbox.is(':checked');
if(checked){
realCheckbox.attr('checked',false);
fakeCheckbox.removeClass('checked').find('span').html('✗');
}else{
realCheckbox.attr('checked',true);
fakeCheckbox.addClass('checked').find('span').html('✓');
}
});
prop('checked',false)
のremoveAttr('checked')
代わりに使用するために、元のチェックボックスを再表示しようとしましたattr('checked',false)
。
実際のチェックボックスも更新する必要があります。「偽の」チェックボックスでクラスを切り替えるだけでは不十分です。