each()函数是基本上所有的框架都提供了的一个工具类函数,通过它,你可以遍历对象、数组的属性值并进行处理。jQuery和jQuery对象都实 现了该方法,对于jQuery对象,只是把each方法简单的进行了委托:把jQuery对象作为第一个参数传递给jQuery的each方法.换句话 说:jQuery提供的each方法是对参数一提供的对象的中所有的子元素逐一进行方法调用。而jQuery对象提供的each方法则是对jQuery内 部的子元素进行逐个调用。
each函数根据参数的类型实现的效果不完全一致:
1、遍历对象(有附加参数)
复制代码 代码如下:
$.each(Object, function(p1, p2) {
this; //这里的this指向每次遍历中Object的当前属性值
p1; p2; //访问附加参数
},
[‘参数1‘, ‘参数2‘]);
2、遍历数组(有附件参数)
复制代码
代码如下:
$.each(Array, function(p1, p2){
this; //这里的this指向每次遍历中Array的当前元素
p1; p2; //访问附加参数
},
[‘参数1‘, ‘参数2‘]);
3、遍历对象(没有附加参数)
复制代码
代码如下:
$.each(Object, function(name, value)
{
this; //this指向当前属性的值
name;
//name表示Object当前属性的名称
value; //value表示Object当前属性的值
});
4、遍历数组(没有附加参数)
复制代码
代码如下:
$.each(Array, function(i, value) {
this; //this指向当前元素
i; //i表示Array当前下标
value;
//value表示Array当前元素
});
下面提一下jQuery的each方法的几种常用的用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
JQuery中的each函数在1.3.2的官方文档中的描述如下:
each(callback)
以每一个匹配的元素作为上下文来执行一个函数。
意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素)。而且,在每次执行函数时,都会给函数传递一个表示作为执行环境的元素在匹配的元素集合中所处位置的数字值作为参数(从零开始的整形)。返回
‘false‘ 将停止循环 (就像在普通的循环中使用 ‘break‘)。返回 ‘true‘ 跳至下一个循环(就像在普通的循环中使用‘continue‘)。
而后面的callback 则是回调函数,指示遍历元素的时候应该赋予的操作。先看下面的一个简单的例子:
迭代两个图像,并设置它们的 src
属性。注意:此处 this 指代的是 DOM 对象而非 jQuery 对象。
HTML 代码:
复制代码
代码如下:
<img/><img/>jQuery 代码:
$("img").each(function(i){
this.src = "test" + i + ".jpg";
});
结果:[ <img src="test0.jpg" />, <img src="test1.jpg" />
]
当然,在遍历元素的时候,jquery是允许自定义跳出的,请看示例代码:你可以使用 ‘return‘ 来提前跳出 each() 循环。
HTML 代码:
复制代码
代码如下:
<button>Change colors</button>
<span></span>
<div></div>
<div></div>
<div></div>
<div></div>
<div id="stop">Stop here</div>
<div></div>
<div></div>
<div></div>
jQuery 代码:
复制代码
代码如下:
$("button").click(function(){
$("div").each(function(index,domEle){
$(domEle).css("backgroundColor","wheat");
if($(this).is("#stop")){
$("span").text("在div块为#"+index+"的地方停止。");
return false;
}
});
或者这么写:
复制代码
代码如下:
$("button").click(function(){
$("div").each(function(index){
$(this).css("backgroundColor","wheat");
if($(this).is("#stop")){
$("span").text("在div块为#"+index+"的地方停止。");
return false;
}
});
图解:
each()
方法规定为每个匹配元素规定运行的函数。
提示:返回 false 可用于及早停止循环。
语法
$(selector).each(function(index,element))参数 描述
function(index,element)
必需。为每个匹配元素规定运行的函数。
?index - 选择器的 index 位置
?element - 当前的元素(也可使用 "this"
选择器
实例
输出每个 li 元素的文本:
复制代码
代码如下:
$("button").click(function(){
$("li").each(function(){
alert($(this).text())
});
});
实例
obj 对象不是数组
该方法同1的最大区别是:fn方法会被逐次不考虑返回值的进行进行。换句话说,obj对象的所有属性都会被fn方法进行调用,即使fn函数返回false。调用传入的参数同1类似。
复制代码
代码如下:
jQuery.each=function( obj, fn, args ) {
if ( args ) {
if ( obj.length == undefined ){
for ( var i in obj )
fn.apply( obj, args );
}else{
for ( var i = 0, ol = obj.length; i
< ol; i++ ) {
if ( fn.apply( obj, args ) === false )
break;
}
}
} else {
if ( obj.length == undefined ) {
for ( var i in obj )
fn.call( obj, i, obj );
}else{
for ( var i = 0, ol = obj.length, val
= obj[0]; i < ol && fn.call(val,i,val) !== false; val = obj[++i] ){}
}
}
return obj;
}
需要特别注意的是each方法中fn的具体调用方法并不是采用简单的fn(i,val)或fn(args),而是采用了fn.call(val,i,val)或fn.apply(obj.args)的形式,这意味着,在你自己的fn的实现中,可以直接采用this指针引用数组或是对象的子元素。
那怎么跳出each呢
jquery再遍历选定的对象时候用each比较方便。有种应用是找到里面符合条件的对象后,要跳出这个循环。
javascript的跳出循环一般用break.
同事遇到这个问题,下意识 的用了break,想跳出这个循环。结果报错
SyntaxError: unlabeled break must be inside loop or switch
经查,应该用一个
在回调函数里return false即可,大多数jq的方法都是如此的
复制代码
代码如下:
返回 ‘false‘ 将停止循环 (就像在普通的循环中使用 ‘break‘)。
返回 ‘true‘ 跳至下一个循环(就像在普通的循环中使用‘continue‘)。
您可能感兴趣的文章:
- jQuery.Autocomplete实现自动完成功能(详解)
- 12款经典的白富美型—jquery图片轮播插件—前端开发必备
- jquery 如何动态添加、删除class样式方法介绍
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
- jQuery EasyUI API 中文文档 - DataGrid数据表格
- JQuery触发radio或checkbox的change事件
- jquery ajax提交表单数据的两种方式
- jquery中获取id值方法小结
- jQuery EasyUI API 中文文档 - ComboBox组合框
- 手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
相关文章
-
jQuery实现限制textarea文本框输入字符数量的方法
这篇文章主要介绍了jQuery实现限制textarea文本框输入字符数量的方法,涉及jQuery键盘事件及页面元素的相关操作技巧,需要的朋友可以参考下
2015-05-05
-
这篇文章主要介绍了jQuery实现导航栏头部菜单项点击后变换颜色的方法,涉及jQuery响应鼠标事件针对页面元素的遍历及属性变换相关操作技巧,需要的朋友可以参考下
2017-07-07
-
jQuery 美元符冲突的解决方法,使用jquery与别的js库共同使用的时候需要注意的地方。
2010-03-03
-
轻松学习jQuery插件EasyUI EasyUI创建RSS
Feed阅读器这篇文章主要帮助大家轻松学习jQuery插件EasyUI,我们将通过 jQuery
EasyUI框架创建一个RSS阅读器,感兴趣的小伙伴们可以参考一下2015-11-11
-
这篇文章主要为大家详细介绍了jQuery图片轮播实现并封装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2016-12-12
-
这个例子使我更加明白呈现数据是前端工作滴一部分,如何使table中的数值变为清晰地条状图呢?听我细细道来
2011-08-08
-
这篇文章主要介绍了jQuery实现为图片添加镜头放大效果的方法,提供了四种放大镜效果供大家选择使用,并附有完整的源码下载地址,需要的朋友可以参考下
2015-06-06
-
Circlr是一款可以对产品图片进行360度全方位旋转展示的jQuery插件,本文给大家分享一款基于jQuery
Circlr插件实现产品图片360度旋转,大家一起来看看吧2015-09-09
-
动态表格,功能为点击添加按钮,表格增加一行并给其name属性赋予的值,点击删除,自动删除这一行,具体实现如下
2014-08-08
-
这篇文章主要向大家推荐了一个jquery无限级联下拉菜单简单实例演示,感兴趣的小伙伴们可以参考一下
2015-11-11
最新评论
大家感兴趣的内容
- 1jquery加载页面的方法(页面加载完
- 2jQuery判断checkbox是否选中的3种
- 3JQuery 绑定select标签的onchang
- 4jquery获取复选框被选中的值
- 5jquery $(document).ready() 与w
- 6jquery 将disabled的元素置为ena
- 7jquery中获取id值方法小结
- 8Jquery获取和修改img的src值的方
- 9jQuery.Autocomplete实现自动完成
- 10JQuery中each()的使用方法说明
最近更新的内容
- Juery解决tablesorter中文排序和字符范围
- jquery分页插件jpaginate在IE中不兼容问题
- jquery图形密码实现方法
- jQuery实现淡入淡出二级下拉导航菜单的方
- jQuery如何跳转到另一个网页 就这么简单
- jQuery学习之prop和attr的区别示例介绍
- JQuery对表格进行操作的常用技巧总结
- jQuery给div,Span, a ,button, radio 赋
- 学习从实践开始之jQuery插件开发 菜单插件
- Jquery 实现checkbox全选方法
众生网络
集思网络
枫信科技
常用在线小工具
- CSS代码工具
- JavaScript代码格式化工具
- 在线XML格式化/压缩工具
- php代码在线格式化美化工具
- sql代码在线格式化美化工具
- 在线HTML转义/反转义工具
- 在线JSON代码检验/检验/美化/格式化
- JavaScript正则在线测试工具
- 在线生成二维码工具(加强版)
- 更多在线工具
原文地址:https://www.cnblogs.com/xtmp/p/9116200.html