使用jquery的遍历each时的一个错误

阅读更多

 

一段小小的代码让我纠结那么久。上午的时候对jquery感觉还是非常棒的,就是因为这段代码,让我搞了这么久。

代码实现的功能这是样的,当点击全选的时候,所选条目变色,当点击取消全选的时候根据行的奇偶性来显示不同的颜色。

 

$(function(){
  $('#ckall').click(function(cbo){
        if(this.accept==''){
                if($(this).attr('checked')==true){        
                     $("input[accept=1]").each(function() {
                             $(this).attr("checked",true);
                             $(this).parents("tr").css("background","#FBEC87");        
                      });
               }else{
                     $("input[accept=1]").each(function() {
                     $(this).attr("checked",false);                        
                     if(($(this).parents("tr").prevAll().length+1)%2==0){        
                             $(this).parents("tr").css("background","white");
                     }else{
                             $(this).parents("tr").css("background","#E5F2FB");        
                      }
             });
    }
   }
  })
})

循环的时候,执行到第二句的时候就会报错。这个语句用在上面也可以啊,为什么提示报错呢?一列10条数据,第一条可以,然后就报错了。我试了好多种方法,以为是取父类的问题。最后发现竟然是#的问题。不能为空?设置成white就OK了。

得到的经验:遇到错误,不要心急,找出错误的位置,先分析,再多想下。这个语句严谨吗?这个语句真的100%没有问题吗?我相信int i=1;你肯定会认为它没有问题。从上面的东西我得到了一个灰常深刻的教训,写代码要严谨,严格按照规范,这样才能最大化的减少问题

你可能感兴趣的:(使用jquery的遍历each时的一个错误)