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
  • 相关阅读:
    VS2015&windows开发环境配置
    Chapter 12. Classes
    Chapter 11. Generic Algorithms
    Chapter 10. Associative Containers
    Chapter 9. Sequential Containers
    Chapter 8. The IO Library
    Chapter 7. Functions
    Chapter 5. Expressions
    案例分析 极化跳变
    机器如果能够实现自己建模,应该是下一次人工智能的飞跃点
  • 原文地址:https://www.cnblogs.com/libin6505/p/10361780.html
Copyright © 2011-2022 走看看