日常佔坑之-----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 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章