我有这个功能:
$("#tabela tr").toggle(function(){
$(this).addClass("zaznaczone");
$(this).find(" :checkbox").attr("checked", "1");
},function(){
$(this).removeClass("zaznaczone");
$(this).find(" :checkbox").attr("checked", "");
});
当我点击“tr”时没问题,但当我点击复选框时,此行响应,但复选框不响应。意思是此操作后的checkobx没有被检查。
<小时/>我在下面写了这段代码:
$("#tabela tr :checkbox").click(function(){
if($(this).attr('checked')==''){
alert("000000");
}
else{
alert("111111111");
}
});
以及发生了什么。当我单击空复选框时,我会看到警报 1111111,并且在按警报弹出复选框上的“确定”之前已选中。按确定后,复选框不会被选中,并从代码中获取类。 当我尝试取消选中复选框时,我看到相同的警报 00000 并且行“tr”未设置代码
<小时/>您的代码非常适合行和复选框,但是当我尝试添加此行时:
$(this).addClass("zaznaczone");
$(this).removeClass("zaznaczone");
然后进行以下工作: 当我单击线条工作时,它应该做什么,但是当我单击复选框然后检查它时,addClass 不起作用 所有代码:
$('#tabela tr').bind('click',function(e){
var cb = $(this).find(':checkbox');
if(e.target !== cb[0]){
if(cb.is(':checked')){
cb.removeAttr('checked');
$(this).removeClass("zaznaczone");}
else{
cb.attr('checked', 'checked');
$(this).addClass("zaznaczone");}
}
});
最佳答案
我无法使用 .toggle()
来完成这项工作,它会自行调用 .preventDefault()
,这使得这项任务对于某些人来说非常棒原因。也许我只是错过了一些东西,但下面的代码很好并且可以工作。
$(document).ready(function(){
$('tr').bind('click',function(e){
var cb = $(this).find(':checkbox');
if(e.target !== cb[0]){
if(cb.is(':checked'))
cb.removeAttr('checked');
else
cb.attr('checked', 'checked');
}
});
});
关于当我检查它时,jQuery 复选框没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239756/