项目开发中,遇到一种情况,想在jQuery.each循环中判断一个条件,如果条件满足则直接退出循环返回一个值,如下
-
$.each(array, function(index, a) {
-
if (met condition) {
-
return someValue;
-
}
-
});
-
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了。
如此一来,上述程序可以写成如下形式
-
var ret = otherValue;
-
$.each(array, function(index, a) {
-
if (met condition) {
-
ret = someValue;
-
return false; // break;
-
}
-
});
-
return ret;
搞懂一些jQuery的运行机制后,一些问题便可以轻松解决了。
阅读(338) | 评论(0) | 转发(0) |