当我检查它时,jQuery复选框没有响应

时间:2010-07-13 17:31:30

标签: jquery checkbox

我有这个功能:

$("#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");}
       }
   });

1 个答案:

答案 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');
       }
   });   
});