首页 > 代码库 > 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
,可以借助一个外部变量来辅助实现我们想要的功能。
jquery 的 each 方法中 return 的坑
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。