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,可以借助一个外部变量来辅助实现我们想要的功能。

时间: 2024-10-12 21:41:08

jquery 的 each 方法中 return 的坑的相关文章

在jquery的ajax方法中的success中使用return要注意的问题

jquery的ajax方法:在success中使用return:来结束程序的时候,结束的只是success这个方法,也就是说success中的return的作用范围只是success: 如果要想在success中使用return结束整个js函数,最好在最外面的方法体内定义一个全局的变量,var isOver = true;在success中如果满足条件就将isOver置为false 在ajax方法体外通过全局变量isOver的值来决定js函数是否return, 同时也要注意:ajax方法的asy

GZIPInputStream read()方法中的巨坑

问题现象: 在从.gz文件中按一定缓存大小读取文件时,会莫名其妙地出现重复读取让此一读过的数据: 例如,第一次: abcdefghi 第二次读取成了: jkldefghi 原因: 百思不得其解,后来看网络上有说法说read方法不一定将缓存填满. 于是上述现象得到了解释,即第二次其实只读到了jkl这几个字符,而后面的defghi又没有被清除掉,于是出现了上述现象. 解决方法: 每次读取后都记录一下实际读到的长度,然后根据实际长度转成字符串. int len = gZIPInputStream.re

jQuery的each方法中实现continue和break的流控制

// i 对应下标,n对应当前循环的元素 $(p).each(function(i,n){ //相当于continue if(i==0) return true; //相当于break if(i==1) return false; });

JS事件处理函数中return false到底是什么东西

在<JS DOM编程艺术>一书中,用return false来阻止事件默认行为,可是js高程3里没有这种用法,那这到底是什么呢. 先看一下知乎的一个解释 就此问题,首先要纠正两个观点: 1. 事件处理方法中 的 return false 并不是终止事件,而是阻止事件宿主的默认行为: 2. 不是在所有的事件处理方法中 return fasle 都能阻止事件宿主的默认行为: 事实上,仅仅是在HTML事件属性 和 DOM0级事件处理方法中 才能通过返回 return false 的形式组织事件宿主的

jquery的ajax方法在无返回值时的返回值类型设定

2013-12-07 19:15:29|  分类: Web前端 |  标签:html  |举报|字号 订阅 $.ajax({ type: "post", url: "index.php", data: "id="+uid, dataType:"json", success : function(){ alert(1); }, error: function(){ alert(0); } }); 在jquery的ajax方法中,

jQuery – AJAX load() 方法

jQuery load() 方法 jQuery load() 方法是简单但强大的 AJAX 方法. load() 方法从服务器加载数据,并把返回的数据放入被选元素中. 语法: $(selector).load(URL,data,callback); 必需的 URL 参数规定您希望加载的 URL. 可选的 data 参数规定与请求一同发送的查询字符串键/值对集合. 可选的 callback 参数是 load() 方法完成后所执行的函数名称. 这是示例文件("demo_test.txt")

在JavaScript中重写jQuery对象的方法

jQuery是一个很好的类库,它给我们解决了很多的客户端编程,任何东西都不是万能的,当它不能满足我们的需求时我们需要对它进行重写,同时也不要影响其原有的功能或者修改其原有的功能:我现在的web应用程序大多数时候的数据交互都是通过Ajax来完成的,这样就可以将一些隐藏字段的数据保存在HTML标签的属性中,使HTML标签的代码量减少,如:ID,Timestamp等等,这些不需要用户输入但又不得不提交的字段,通过表单提交的做法是 <input name="ID" value="

在ASP.NET MVC中使用jQuery的Load方法加载静态页面的一个注意点

使用使用jQuery的Load方法可以加载静态页面,本篇就在ASP.NET MVC下实现. Model先行: public class Article { public int Id { get; set; } public string Url { get; set; } } 在HomeController中的Index方法,向视图传递一个Article强类型. public class HomeController : Controller { public ActionResult Ind

jquery.ajax的url中传递中文乱码问题的解决方法

jquery.ajax的url中传递中文乱码问题的解决方法 JQuery JQuery默认的contentType:application/x-www-form-urlencoded 这才是JQuery正在乱码的原因,在未指定字符集的时候,是使用ISO-8859-1 ISO8859-1,通常叫做Latin-1.Latin-1包括了书写所有西方欧洲语言不可缺少的附加字符. JQuery的Ajax根本没有考虑到国际化的问题,使用了欧洲的字符集,所以才引起了传递中文出现乱码的问题. 而我们的UTF-8