zoukankan      html  css  js  c++  java
  • jquery 的 each 方法中 return 的坑

    转:

    jquery 的 each 方法中 return 的坑

    jquery 的 each 方法中 return 的坑

    Chapter 0#

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

    Chapter 1#

    最初的代码:

        这里的代码,虽然return 了,但是并未实际 return 值作为方法的返回值,而且还是继续往后执行。 在网上查询之后发现在 jquery 的 each 方法中如果 return true 相当于是 continue,而 return false 相当于是 break
    复制代码
     1 $(":checkbox[name='insurace-category']:checked").each(function (index, ele) {
     2         var _item = $(".gift_option_item_" + $(ele).val());
     3         if (_item && _item.length > 0) {
     4             var _premium = $.trim($(_item).find(".custom_inputbox").eq(0).val());
     5             var _selectElement = $(_item).find("select");
     6             if (_selectElement && _selectElement.length > 0) {
     7                 var _amount = $.trim($(_selectElement).val());
     8                 if (!_amount) {
     9                     layer.msg("请选择保额!", function () {
    10                         $(_selectElement).focus();
    11                     });
    12                     return false;
    13                 }
    14             }
    15             if (!_premium) {
    16                 layer.msg("请输入保费!", function() {
    17                     $(_item).find(".custom_inputbox").eq(0).focus();
    18                 });
    19                 return false;
    20             }
    21         }
    22     });
    复制代码
     

    Chapter 2#


    我的解决方案如下:

    修改后的代码:

    复制代码
     1    var _isInvalid = false;
     2     $(":checkbox[name='insurace-category']:checked").each(function (index, ele) {
     3         var _item = $(".gift_option_item_" + $(ele).val());
     4         if (_item && _item.length > 0) {
     5             var _premium = $.trim($(_item).find(".custom_inputbox").eq(0).val());
     6             var _selectElement = $(_item).find("select");
     7             if (_selectElement && _selectElement.length > 0) {
     8                 var _amount = $.trim($(_selectElement).val());
     9                 if (!_amount) {
    10                     layer.msg("请选择保额!");
    11                     $(_selectElement).focus();
    12                     _isInvalid = true;
    13                     return false;
    14                 }
    15             }
    16             if (!_premium) {
    17                 layer.msg("请输入保费!");
    18                 $(_item).find(".custom_inputbox").eq(0).focus();
    19                 _isInvalid = true;
    20                 return false;
    21             }
    22         }
    23     });
    24     if (_isInvalid) {
    25         return false;
    26     }
    复制代码
     
    我这里借助了一个变量来辅助判断,当不满足条件时设置为 true ,在循环外判断这个变量的值,如果变量的值是 true 则证明又不合法的值,如果变量的值为 false,则证明所需要判断的值都符合要求

    Summary#

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

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    分类: javascript
    标签: javascript
  • 相关阅读:
    “XXXXX” is damaged and can’t be opened. You should move it to the Trash 解决方案
    深入浅出 eBPF 安全项目 Tracee
    Unity3d开发的知名大型游戏案例
    Unity 3D 拥有强大的编辑界面
    Unity 3D物理引擎详解
    Unity 3D图形用户界面及常用控件
    Unity 3D的视图与相应的基础操作方法
    Unity Technologies 公司开发的三维游戏制作引擎——Unity 3D
    重学计算机
    windows cmd用户操作,添加,设备管理员组,允许修改密码
  • 原文地址:https://www.cnblogs.com/libin6505/p/10361780.html
Copyright © 2011-2022 走看看