我有这个功能:
$("#tabela tr").toggle(function(){
$(this).addClass("zaznaczone");
$(this).find(" :checkbox").attr("checked", "1");
},function(){
$(this).removeClass("zaznaczone");
$(this).find(" :checkbox").attr("checked", "");
});
当我点击“tr”时它很好但是当我点击复选框时这行响应但是复选框没有。不检查此操作后的平均值。
我写下这段代码:
$("#tabela tr :checkbox").click(function(){
if($(this).attr('checked')==''){
alert("000000");
}
else{
alert("111111111");
}
});
发生了什么。当我点击空复选框时,我会看到警报1111111,然后在按下确认弹出窗口复选框之前复选框。按下ok后复选框没有被选中,tr从代码中获取类。 当我尝试取消选中复选框时,我会看到同样的警报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");}
}
});
答案 0 :(得分:1)
我无法使用.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');
}
});
});