jquery.each return false 问题

在做需求的时候,用到了jquery.each循环,对循环遍历的值进行判断,不符合条件的,return false,给出提示,但是遇到的情况是,return false 后,还能继续执行,都走了后台,感觉没有校验住,但又觉得代码写的没错,自己瞎搞了一下午就整好。(没网寸步难行,这是挺听苦逼的)。最后在别人的指导下,修改了下代码,加了一个flag标识判断就好了。(只能说自己很菜,惭愧。。。)

var isFlag = false,colValues=[];
var columns = $("#tableId  tr td:nth-child(2)");
$.each(columns,function(index,item){
   var inpColumnVal = $(itme).val();
   var columnLength =inpColumnVal.length;
   if(columnLength > xxx){
     $(item).css("color","red");
     colValues.push(inpColumnVal );
     isFlag = true;
    }else{
     $(item).css("color","blank");
    }
});

if(isFlag){
    for(var i=0;item;item=colValues[i];i++){
    alert(”当前长度为“ +item.length + “,不能超过xxx”);
    }
    return false;
}

最后在网上搜了下.找到解决方法,有案例,记录下,学习下。

1. $.each实际上也是jquery的自定义函数, 在循环体内return false表示跳出each函数, return true表示跳出这一次循环, 继续执行下一次循环. 所以要是想跳出整个函数, 只有用变量控制.

<script type="text/javascript">
<!--
function saveData(){ 
var oCount = 0;
  $(".frame1").each(function(){ 
 if(this.value==""){ 
 var temp = $(this).parent().prev().text(); 
 var name = temp.substring(1,temp.length); 
 oCount ++;
 alert(name+"不能为空!"); 
 }

  ) 
  if(oCount <= 0){
 document.form.action="sss.do"; 
 document.form.submit(); 
  }

//-->
</script>

2.可以用throw new Error('your message');把return false;替换掉。在each外面try{}catch(e){}处理

function saveData(){
    try {
        $(".frame1").each(function(){
            if (this.value == "") {
                var temp = $(this).parent().prev().text();
                var name = temp.substring(1, temp.length);
                throw name;
            }
        });
    } catch (e) {
        alert(e + "不能为空!");
    }
    document.form.action = "sss.do";
    document.form.submit();
}

3.jq 的return false;只是跳出循环而已~要返回值还是要在循环外面做
function test(){
var success = false;
$(..).each(function () { 
   if (..) { 
       success = true;
                      return false;
   } 
});
 return success ; 

jquery是对象链~所以$(..).each()返回的还是对象集合~each(function(){})~只是回调函数而已~所以在回调函数里不能返回结果到each外面~

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值