数组的实例上都有一个叫做 forEach 的方法,这个方法定义在 Array.prototype 上,所以数组的所有实例都可以使用 forEach 这个方法。 forEach 方法的语法结构如下:  

 var ary = [1, 2, 3, 4, 5, 5, 6, 8, 9];
ary.forEach(function(index, item) {
// 这个函数一共会执行 ary.length 次
// index 当前数组的索引
// item 当前索引对应的哪项
// thisArg 当函数执行的时候,函数里面的 this 关键字
}, thisArg);

  forEach 方法的兼容程度是 IE9+,对于 IE8 浏览器,我们需要做兼容性处理,所以采用惰性函数的思想,对 forEach 方法做一个简单的处理,代码如下:

Array.prototype.forEach = (function() {
  //当对于支持 forEach 方法的浏览器,使用数组本身自带的方法
if (this.forEach) {
return function(fn, thisArg) {
thisArg = thisArg || window;
fn.call(thisArg, index, item);
}
}
  //对于不支持 forEach 的浏览器,用自定义的方法重写数组类原型上的 forEach 方法
return function(fn, thisArg) {
for (var i = 0, len = this.lenght; i < len; i++) {
thisArg = thisArg || window;
fn.call(thisArg, index, item);
}
}
})();

用过 jQuery 的朋友会发现,jQuery 中有 each 这个方法,一个是定义在 $.each 上,另一个是定义在 jQuery 的实例上。

 关于 $.each 这个方法,它的使用模式如下:

$.each(需要遍历的对象/需要被遍历的数组,回调函数[可选的,参数是 index, item]);

回调函数中的 item 就是当前被遍历到的项,如果传递进去的对象是 jquery 对象,item 是 dom 对象,而且函数中的 this 关键字指向这个 dom 对象;

回调函数中如果传递进去的是数组,item 就是当前数组中的 index 对应的当前项,this 关键字指向当前项;

函数执行的返回结果就是当前操作的参数。

我们可以参见实例代码:

  实例代码1:$.each 操作数组

//操作数组
var ary = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var res =$.each(ary, function(index, item) {
// do somthing
console.log(index, item);
});
console.log(res ===ary);

实例2: $.each 操作jQuery 对象

// 操作 jquery 对象
$.each($('p'),function(index,item) {
console.log(this==item,index,item);
})

挂载 $ 这个美元符号上的方法是 jQuery 上的工具方法, 通过 $(selector) 生成的 jQuery 对象上也有一个 each 方法,方法的使用参见 jquery api

$('p').each(function(index, item) {
console.log(index + 1 + ":" + item.className);
});

但是好像这个方法并没有太大的实际用处的样子。

数组中的each 和 jquery 中的 each的更多相关文章

  1. HTML5中的data-*属性和jQuery中的.data()方法使用

    原文地址链接:http://blog.csdn.net/fly_zxy/article/details/50687691: HTML5中的data-*属性 我们往往会根据需要在HTML标记上添加自定义 ...

  2. js中window.onload 与 jquery中$(document.ready()) 測试

    js中window.onload 与 jquery中$(document.ready())差别,验证代码例如以下(调换js代码和Jquer代码书写顺序測试.执行结果一样.因此与代码书写位置没关系): ...

  3. css中:not()选择器和jQuery中.not()方法

    因为老是将这两个的not方法弄混,所以写一下备忘. css中:not()选择器用法 :not 伪类选择器可以筛选不符合表达式的元素,:not(selector) 其中的selector为css选择器 ...

  4. 数组的foreach方法和jQuery中的each方法

    /* * 数组的forEach方法: * 1.返回给回调的参数先是值,然后是下标 * 2.回调函数执行时内部的this指向window * */ /*var arr = [1,2,3,4,5]; ar ...

  5. JS中的onload与jQuery中的ready差别

    jQuery的运行机制(onload与ready的差别) 结论得出前自行測试: 为了測试是否真如所说的那样,所以在页面插入了20000张照片,照片数量少得不出什么结论,所以改用console.log( ...

  6. js中的style与jQuery中的css

    使用jQuery选择器时,可以直接使用css函数(注意不能使用$("p")[1].css()) $("p").css("background-colo ...

  7. JQuery中的对象和事件

    一:JQuery 对象和 Dom 对象 在使用 JQuery 过程中,我们一般(也是绝大多数情况下,除非我们使用了第二个框架)只有两类对象,即:JQuery 对象和 Dom 对象.Dom 对象指的是普 ...

  8. jQuery中attr()与prop()区别介绍

    .attr() : 获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性. •.attr( attributeName ) •.attr( attributeName ) ...

  9. jquery中链式调用原理

    (1).链式调用 $("#mybtn").css("width","100px") .css("height",&quo ...

随机推荐

  1. Java MD5加密类

    /************************************************* md5 类实现了RSA Data Security, Inc.在提交给IETF 的RFC1321中 ...

  2. LoadRunner脚本增强技巧之自动关联

    为什么要做关联,原理很简单,录制脚本的时候,服务器会给用户一个唯一的认证码来进行操作,当再次回放脚本的时候服务器又会给一个全新的认证码,而录制好的脚本是写死的,还是拿老的认证码提交,肯定会导致脚本执行 ...

  3. mvc4中使用部分视图局部刷新实例

    如上效果图,网页中有主视图(上)和部分视图(下),点击提交会把文本框中的值发送到服务器,再返回所有添加的信息,在下方局部更新(只更新部分视图),实现如下: 1.网页主视图代码: @model MvcA ...

  4. HDU4466_Triangle

    今天比赛做的一个题目,不过今天终于感受到了复旦题目有多坑了. 题目的意思是给你一段长为n个单位长度的直线,你可以选择任意连续单位长度的线段组成三角形,可以组成任意你可以组成任意多个三角形,且要求其中所 ...

  5. SolrPerformanceFactors--官方文档

    原文地址:http://wiki.apache.org/solr/SolrPerformanceFactors Contents Schema Design Considerations indexe ...

  6. 洛谷P2894[USACO08FEB]酒店Hotel(线段树)

    问题描述 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大的旅馆一共有N (1 <= N & ...

  7. web项目访问路径上为什么不能写上WebContent

    我们常常在WEB项目中要写很多的访问路径,比如说/good/target.jsp;目录结构中从来不会带有项目目录结构的WebContent?这到底的为什么呢? 我们知道WEB项目是放在容器上运行的,而 ...

  8. 【Mybatis】Mybatis的sql模糊查询

    这个网站中有很多方法.https://code.google.com/p/mybatis/issues/detail?id=85 自己试验了如下的方法. 1.  参数中直接加入%% param.set ...

  9. C++解析-外传篇(2):函数的异常规格说明

    0.目录 1.异常规格说明 2.unexpected() 函数 3.小结 1.异常规格说明 问题: 如何判断一个函数是否会抛出异常,以及抛出哪些异常? C++提供语法用于声明函数所抛出的异常 异常声明 ...

  10. Day21-Cookie

    1. Cookie,有时也用其复数形式 Cookies,指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密).例如在某个网站上保存了用户名和密码,3个月内 ...