jquery 的 each 方法中 return 的坑

jquery 的 each 方法中 return 的坑

Chapter 0

在项目中使用 jquery 的 each 方法时想在 each 的循环中返回一个布尔类型的值于是掉进一个坑中...

Chapter 1

最初的代码:

    $(":checkbox[name='insurace-category']:checked").each(function (index, ele) {
        var _item = $(".gift_option_item_" + $(ele).val());
        if (_item && _item.length > 0) {
            var _premium = $.trim($(_item).find(".custom_inputbox").eq(0).val());
            var _selectElement = $(_item).find("select");
            if (_selectElement && _selectElement.length > 0) {
                var _amount = $.trim($(_selectElement).val());
                if (!_amount) {
                    layer.msg("请选择保额!", function () {
                        $(_selectElement).focus();
                    });
                    return false;
                }
            }
            if (!_premium) {
                layer.msg("请输入保费!", function() {
                    $(_item).find(".custom_inputbox").eq(0).focus();
                });
                return false;
            }
        }
    });

这里的代码,虽然return 了,但是并未实际 return 值作为方法的返回值,而且还是继续往后执行。
在网上查询之后发现在 jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break
我的解决方案如下:

Chapter 2

修改后的代码:

    var _isInvalid = false;
    $(":checkbox[name='insurace-category']:checked").each(function (index, ele) {
        var _item = $(".gift_option_item_" + $(ele).val());
        if (_item && _item.length > 0) {
            var _premium = $.trim($(_item).find(".custom_inputbox").eq(0).val());
            var _selectElement = $(_item).find("select");
            if (_selectElement && _selectElement.length > 0) {
                var _amount = $.trim($(_selectElement).val());
                if (!_amount) {
                    layer.msg("请选择保额!");
                    $(_selectElement).focus();
                    _isInvalid = true;
                    return false;
                }
            }
            if (!_premium) {
                layer.msg("请输入保费!");
                $(_item).find(".custom_inputbox").eq(0).focus();
                _isInvalid = true;
                return false;
            }
        }
    });
    if (_isInvalid) {
        return false;
    }

我这里借助了一个变量来辅助判断,当不满足条件时设置为 true ,在循环外判断这个变量的值,如果变量的值是 true 则证明又不合法的值,如果变量的值为 false,则证明所需要判断的值都符合要求

Summary

jquery each 方法中的 return 实际上是不会 return 啊,在 jquery each 方法中 return false,可以借助一个外部变量来辅助实现我们想要的功能。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,188评论 19 139
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 4,937评论 0 1
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,612评论 18 399
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,358评论 0 33
  • "大概是1000块钱" 李良坐在我的对面。五瓶啤酒下肚,他满脸通红,夏日的知了在窗外欢快的叫着,阳光稀稀拉拉的透了...
    李良阅读 3,068评论 0 1

友情链接更多精彩内容