我的问题很简单,我有一个隐藏的复选框和一个自定义假复选框,触发真正的复选框。我已经尝试了很多种方法,但click
函数只能在开头而不是停止。
我已经在stackoverflow上搜索了类似的问题,但是找不到类似于我的问题。谢谢你的时间。
HTML:
<div class="fl">
<span class="tri_checkbox"></span>
<input class="hidden_checkbox" type="checkbox" />
</div>
jQuery的:
$(document).on('click','.tri_checkbox',function() {
if ( !$(this).hasClass('selected') ) {
$(this).parent().find('input.hidden_checkbox').attr('checked','checked');
$(this).addClass('selected');
}else{
$(this).parent().find('input.hidden_checkbox').removeAttr('checked');
$(this).removeClass('selected');
}
});
答案 0 :(得分:4)
您需要使用.prop()来设置已检查的属性
$(document).on('click', '.tri_checkbox', function () {
$(this).next().prop('checked', function (_, checked) {
return !checked;
});
$(this).toggleClass('selected');
});
演示:Fiddle
答案 1 :(得分:3)
缩短你的代码,试试这个:
$(this).toggleClass("selected");
$(this).parent(".fl").find(":checkbox").prop("checked", $(this).hasClass("selected"));
演示:http://jsfiddle.net/CVWWn/4/
或者只使用一条大链:
$(this).toggleClass("selected").parent(".fl").find(":checkbox").prop("checked", $(this).hasClass("selected"));
答案 2 :(得分:1)
$(document).on('click','.tri_checkbox',function() {
if ( $(this).hasClass('selected') ) {
$(this).siblings('input.hidden_checkbox').prop('checked', false);
$(this).removeClass('selected');
}
else {
$(this).siblings('input.hidden_checkbox').prop('checked', 'checked');
$(this).addClass('selected');
}
});