日常占坑之-----jQuery的.each()方法中return的坑

需求:判断输入框中是否有值,无值就返回false,不在继续往下执行。

问题:当在jQueryf的each()方法中,return false后只是跳出本次循环,仍会继续往下执行。

出现问题的代码
var data=[];
//注意:jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break。所以return false仍会继续往后执行
//总结:jquery 的 each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。
$("input:checkbox[name=gdId]:checked").each(function(i){
    var good=[];
    var id=$(this).val();
    var sort=$(this).parent().parent().find("input[name='sort']").val();
    var fileObj=$(this).parent().parent().find("input[type='file']")[0].files[0];
    if(fileObj==null){
        layer.msg("封面配图不能为空!");
        return false;
    }
    if(sort==""){
        layer.msg("请输入排序");
        return false;
    }
    good.push({id:id,sort:sort,fileObj:fileObj})
    data.push(good);
});
注意:jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break。所以return false仍会继续往后执行
总结:jquery 的 each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。

解决后的代码

var data=[];
//注意:jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break。所以return false仍会继续往后执行
//总结:jquery 的 each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。
var _isInvalid = false;
$("input:checkbox[name=gdId]:checked").each(function(i){
    var good=[];
    var id=$(this).val();
    var sort=$(this).parent().parent().find("input[name='sort']").val();
    var fileObj=$(this).parent().parent().find("input[type='file']")[0].files[0];
    if(fileObj==null){
        layer.msg("封面配图不能为空!");
        flag=true;
        return;
        }
    if(sort==""){
        layer.msg("请输入排序");
        flag=true;
        return;
    }
    good.push({id:id,sort:sort,fileObj:fileObj})
    data.push(good);
});
if(flag){
    return false;
}


--------------------- 
作者:苏泼漫 
来源:CSDN 
原文:https://blog.csdn.net/wicher_wu/article/details/80280183 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/u014018281/article/details/84583373