jquery each方法的return false
转:小鸡啄米
jquery each方法的return false
return false;
想必都明白终止函数的继续执行,如果放在主程序中,则终止程序的执行,今天在jquery中each发现return false;程序仍可以往下执行,看了源码才知道原来return false,在each方法中只相当于在一个函数中的return false;当前的函数会停止循环而程序会继续执行。(想想真恐怖,以前写的还不知道有多少BUG呢!对JS还是不了解)。[size=medium]
Java代码
- // A special, fast, case for the most common use of each
- }
- else {
- if ( isObj ) {
- for ( name in object ) {
- if ( callback.call( object[ name ], name, object[ name ] ) === false )
- {
- break;
- }
- }
- } else {
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false;
- value = object[++i] ) {}
- }
- }
复制代码这是jquery each 方法的一段源码,
Java代码
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
复制代码这部分就是执行函数的部分。
call函数的意思指的是:调用一个函数,并把第一个参数作为函数的上下文,也就是this对象。所以如果有函数有return false的话,就只是停止了这个循环,你所写的下面的代码还会执行!
如果想停止程序的执行。当然还要另外处理。
处理的方法包括两种:
1,异常处理:在你的return false处,添加throw 语句,用try catch捕捉catch 后直接return false;
2 ,变量控制:在return false 前改变一个变量的值,在each语句后检查变量的值。
最终要的还是:了解你的程序的结构,了解jquery 的结构!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论