Chinaunix首页 | 论坛 | 博客
  • 博客访问: 20578
  • 博文数量: 7
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 67
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-30 19:06
个人简介

时不时的会发两篇博文

文章分类

全部博文(7)

文章存档

2014年(5)

2013年(2)

我的朋友

分类: JavaScript

2014-03-19 08:38:10

    项目开发中,遇到一种情况,想在jQuery.each循环中判断一个条件,如果条件满足则直接退出循环返回一个值,如下
  1. $.each(array, function(index, a) {
  2.     if (met condition) {
  3.         return someValue;
  4.     }
  5. });
  6. return otherValue;
    结果发现,程序总是返回 otherValue,这也就是说程序总是走完each循环,而没有当条件满足的时候在第3行直接返回。
    查看了一些资料才发现,原来在jQuery.each中使用 return false 相当于在for或while循环中使用break,return true则相当于使用continue,这不禁想起了js的事件冒泡。
    其实可以这样来理解,jQuery.each相当于其中function的父事件,在function中return false则阻止jQuery.each运行,也就相当于使用break,这也就很容易理解为什么return true就相当于使用continue了。
    如此一来,上述程序可以写成如下形式
  1. var ret = otherValue;
  2. $.each(array, function(index, a) {
  3.     if (met condition) {
  4.         ret = someValue;
  5.         return false; // break;
  6.     }
  7. });
  8. return ret;
    搞懂一些jQuery的运行机制后,一些问题便可以轻松解决了。

阅读(338) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~