$.each 和$(selector).each()的区别

深入理解jQuery.each()遍历函数

转自:http://blog.csdn.net/on_my_way20xx/article/details/7791769

$.each()

译自官方手册:jQuery.each()

对数组或对对象内容进行循环处理

jQuery.each( collection, callback(indexInArray, valueOfElement) )

collection   遍历的对象或数组

callback(indexInArray, valueOfElement) 在每一个对象上调用的函数

说明

一个通用的遍历函数 , 可以用来遍历对象和数组. 数组和含有一个length属性的伪数组对象 (伪数组对象如function的arguments对象)以数字索引进行遍历,从0到length-1, 其它的对象通过的属性进行遍历.

$.each()与$(selector).each()不同, 后者专用于jquery对象的遍历, 前者可用于遍历任何的集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值(值亦可以通过this 关键字获取,但javascript总会包装this 值作为一个对象—尽管是一个字符串或是一个数字),方法会返回被遍历对象的第一参数

 1 //例子:———传入数组
 2 <!DOCTYPE html>
 3 <html>
 4   <head>
 5   <script src=”http://code.jquery.com/jquery-latest.js”></script>
 6   </head>
 7 <body>
 8   <script>
 9     $.each([52, 97], function(index, value) {
10       alert(index + ‘: ‘ + value);
11     });
12   </script>
13 </body>
14 </html>
15 //输出
16 0: 52
17 1: 97
 1 //例子:———如果一个映射作为集合使用,回调函数每次传入一个键-值对
 2 <!DOCTYPE html>
 3 <html>
 4   <head>
 5     <script src=”http://code.jquery.com/jquery-latest.js”></script>
 6   </head>
 7 <body>
 8 <script>
 9   var map = {
10     ‘flammable’: ‘inflammable’,
11     ‘duh’: ‘no duh’
12   };
13   $.each(map, function(key, value) {
14     alert(key + ‘: ‘ + value);
15   });
16 </script>
17 </body>
18 </html>
19 //输出
20 flammable: inflammable
21 duh: no duh
 1 //例子:———回调函数中 return false时可以退出$.each(), 如果返回一个非false 即会像在for循环中使用continue 一样, 会立即进入下一个遍历
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5   <style>
 6   div { color:blue; }
 7   div#five { color:red; }
 8   </style>
 9   <script src=”http://code.jquery.com/jquery-latest.js”></script>
10 </head>
11 <body>
12   <div id=”one”></div>
13   <div id=”two”></div>
14   <div id=”three”></div>
15   <div id=”four”></div>
16   <div id=”five”></div>
17 <script>
18     var arr = [ "one", "two", "three", "four", "five" ];//数组
19     var obj = { one:1, two:2, three:3, four:4, five:5 }; // 对象
20     jQuery.each(arr, function() {  // this 指定值
21       $(“#” + this).text(“Mine is ” + this + “.”);  // this指向为数组的值, 如one, two
22        return (this != “three”); // 如果this = three 则退出遍历
23    });
24     jQuery.each(obj, function(i, val) {  // i 指向键, val指定值
25       $(“#” + i).append(document.createTextNode(” – ” + val));
26     });
27 </script>
28 </body>
29 </html>
30 // 输出
31 Mine is one. – 1
32 Mine is two. – 2
33 Mine is three. – 3
34 - 4
35 - 5
 1 //例子:———遍历数组的项, 传入index和value
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5   <script src=”http://code.jquery.com/jquery-latest.js”></script>
 6 </head>
 7 <body>
 8 <script>
 9   $.each( ['a','b','c'], function(i, l){
10     alert( “Index #” + i + “: ” + l );
11   });
12 </script>
13 </body>
14 </html>
 1 //例子:———遍历对象的属性,传入 key和value
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5   <script src=”http://code.jquery.com/jquery-latest.js”></script>
 6 </head>
 7 <body>
 8 <script>
 9   $.each( { name: “John”, lang: “JS” }, function(k, v){
10     alert( “Key: ” + k + “, Value: ” + v );
11   });
12 </script>
13 </body>
14 </html>
 1 1. 如果不想输出第一项 (使用retrun true)进入 下一遍历
 2 <!DOCTYPE html>
 3 <html>
 4 <head>
 5   <script src=”http://code.jquery.com/jquery-latest.js”></script>
 6 </head>
 7 <body>
 8 <script>
 9   var myArray=["skipThis", "dothis", "andThis"];
10   $.each(myArray, function(index, value) {
11     if (index == 0) {
12     return true; // equivalent to ‘continue’ with a normal for loop
13   }
14     // else do stuff…
15     alert (index + “: “+ value);
16   });
17 </script>
18 </body>
19 </html>

 

 

 

 

转载于:https://www.cnblogs.com/yaowukonga/archive/2013/03/29/2988298.html

<think> 首先,用户的问题是:“我想了解jQuery中$.each方法的相关信息,如使用方法、示例、注意事项等 请问jQuery $.each方法的使用介绍”。用户要求提供关于jQuery $.each方法的详细信息。 从用户的引用中,有四个引用:[^1], [^2], [^3], [^4]。这些引用提供了与$.each方法相关的信息: - [^1]:描述了$.each()作为全局函数,用于遍历对象数组。回调函数有两个参数:索引值。可以通过返回false退出循环。 - [^2]:提到了$.each()$.grep(),以及$().each()$().each()用于DOM元素的遍历。 - [^3]:展示了$.each()用于遍历隐藏的input元素。 - [^4]:给出了使用$.each()遍历HTML表格的例子。 用户指定:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题你的回答。” 但在系统指令中,没有“上一次的问题”,因为这是新的对话。系统指令是固定的,包括使用LaTeX格式、中文回答等。 系统级指令: 1. 所有行内数学表达式使用$...$格式。 2. 独立公式使用$$...$$格式。 3. LaTeX语法正确。 4. 使用中文回答。 5. 生成相关问题。 6. 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 此外,用户可见层:回答结构清晰,帮助用户逐步解决问题,保证真实可靠。 用户的问题是中文的,所以我需要用中文回答。 结构: 1. **引言**:简要介绍$.each方法。 2. **使用方法**:解释$.each的语法参数。 3. **示例**:提供代码示例,展示如何遍历数组、对象DOM元素。 4. **注意事项**:讨论常见的坑点、如何退出循环等。 5. **相关问题**:生成相关问题。 在引用中,区分了$.each(全局函数)$().each(jQuery对象方法)。用户主要问$.each,但引用中提到了两者,所以我应该覆盖两者,但聚焦在$.each。 关键点: - $.each():用于遍历数组对象。 - 语法:$.each(collection, callback) - 回调函数:function(index, value) 或 function(key, value) for objects. - 返回false退出。 - $().each():用于遍历jQuery对象(DOM元素)。 - 语法:$(selector).each(callback) - 回调函数:function(index, element) 在回答中,需要自然地添加引用标识。例如,提到特定点时,引用来源。 生成相关问题:在回答结束时,添加相关问题部分。 使用中文回答。 确保LaTeX:用户问题中没有数学表达式,但如果有,需要使用指定格式。这里可能不需要数学,但如果涉及数字或公式,要处理。否则,忽略。 完整结构: - 标题或开头:介绍jQuery $.each方法。 - 详细说明: - 什么是$.each? - 使用方法(语法)。 - 回调函数参数。 - 如何退出循环。 - 示例代码。 - 注意事项(如性能、兼容性)。 - 引用应用:在相关部分添加[^1], [^2]等。 - 结尾:简要总结。 - 相关问题:生成3-5个相关问题。 生成相关问题:例如: 1. $.each()$().each()有什么区别? 2. 如何遍历嵌套对象使用$.each? 3. $.each()在性能方面有何考量? 4. 其他jQuery遍历方法如$.map()如何比较? 5. 在实际项目中常见的使用场景? 确保回答真实可靠:基于提供的引用jQuery文档知识。$.each是标准的jQuery工具函数。 示例代码:从引用中提取或简化。 - 数组遍历示例。 - 对象遍历示例。 - DOM遍历示例。 注意事项: - $.each用于数组对象,但$().each用于DOM。 - 退出循环:return false。 - 回调函数中this的上下文。 - 性能:对于大数据集,可能效率较低。 现在,草拟回答。 </think> ### jQuery $.each() 方法的使用介绍 jQuery 是一个流行的 JavaScript 库,简化了 DOM 操作、事件处理遍历。其中,$.each() 是一个全局函数,用于高效地遍历数组或对象。它不依赖于 jQuery 对象,而是直接操作数据集合,通过回调函数处理每个元素。下面我将逐步介绍$.each() 的使用方法、示例代码注意事项,确保内容清晰可靠。 #### 1. **$.each() 方法的基本介绍** - **什么是$.each()?** $.each() 是 jQuery 提供的一个通用遍历函数,用于迭代数组或对象的元素。与 jQuery 对象的方法 $().each()(专门用于遍历 DOM 元素)不同,$.each() 是全局函数,操作更灵活[^1]。它接受两个参数: - 第一个参数:要遍历的数组或对象。 - 第二个参数:回调函数,处理每个元素。 回调函数签名:`function(index, value)`(用于数组)或 `function(key, value)`(用于对象)。其中: - `index` 或 `key`:元素的索引或键名。 - `value`:元素的值。 通过返回 `false` 可以提前退出循环,其他返回值会被忽略[^1]。 - **适用场景** $.each() 常用于处理 JSON 数据、数组遍历或迭代对象属性,但不适用于直接操作 DOM(此时应使用 $().each())[^2]。 #### 2. **使用方法** - **语法** ```javascript $.each(collection, callback); ``` - `collection`:可以是数组(如 `[1, 2, 3]`)或对象(如 `{name: "John", age: 30}`)。 - `callback`:回调函数,定义处理逻辑。 - **关键点** - **退出循环**:在回调函数中返回 `false` 可终止遍历(例如,满足特定条件时)[^1]。 - **上下文**:回调函数中的 `this` 指向当前元素的值(等同于 `value` 参数)。 - **返回值**:$.each() 本身返回原始集合,便于链式操作,但通常用于副作用(如修改数据)。 #### 3. **示例代码** 以下示例基于引用内容,展示 $.each() 的实际应用(运行于浏览器环境需引入 jQuery 库)。 - **示例 1:遍历数组** 遍历数组并打印每个元素及其索引。 ```javascript var colors = ["red", "green", "blue"]; $.each(colors, function(index, value) { console.log("索引: " + index + ", 值: " + value); }); // 输出: // 索引: 0, 值: red // 索引: 1, 值: green // 索引: 2, 值: blue ``` 此例演示了基本数组迭代[^1]。 - **示例 2:遍历对象** 遍历对象属性并处理数据。 ```javascript var user = {name: "Alice", age: 25, city: "Beijing"}; $.each(user, function(key, value) { console.log("属性: " + key + ", 值: " + value); }); // 输出: // 属性: name, 值: Alice // 属性: age, 值: 25 // 属性: city, 值: Beijing ``` 对象遍历时,第一个回调参数是键名而非索引[^1]。 - **示例 3:遍历 DOM 元素(结合 $().each() 对比)** 虽然 $.each() 不直接用于 DOM,但可以与 jQuery 选择器结合。例如,遍历所有隐藏的 `<input>` 元素: ```javascript var hiddenInputs = $("input:hidden"); // 获取 jQuery 对象 $.each(hiddenInputs, function(index, element) { console.log("索引: " + index + ", 元素名: " + element.name); // element 是原生 DOM 元素 }); ``` 注意:这里使用了 $.each() 遍历 jQuery 对象数组,但更推荐 $().each() 用于纯 DOM 操作(如 `$("input:hidden").each(...)`)[^3]。 - **示例 4:复杂数据遍历(摘自引用)** 遍历 HTML 表格的行单元格: ```html <table id="myTable"> <tr><td>1</td><td>Satinder Singh</td></tr> <tr><td>2</td><td>Amit Sarna</td></tr> </table> <script> var tableData = []; $.each($("#myTable tr"), function(rowIndex, row) { var rowValues = []; $.each($(row).find("td"), function(cellIndex, cell) { rowValues.push($(cell).text()); }); tableData.push(rowValues); }); console.log(tableData); // 输出: [["1", "Satinder Singh"], ["2", "Amit Sarna"]] </script> ``` 此例展示了嵌套遍历,常用于数据提取[^4]。 #### 4. **注意事项** - **性能优化**: - 对于大型数组(超过 1000 元素),$.each() 可能比原生 JavaScript 的 `for` 循环慢。优先考虑性能时,使用 `Array.forEach()` 或普通循环。 - 避免在回调中执行耗时操作(如复杂计算)。 - **常见错误**: - **混淆 $.each()$().each()**:$.each() 用于数据集合;$().each() 用于 jQuery 对象(如 DOM 元素)。例如,`$("div").each(...)` 是正确的 DOM 遍历方式[^2][^3]。 - **返回值忽略**:$.each() 回调中的返回值(除 `false` 外)无效;若要修改数组,需手动操作原集合。 - **作用域问题**:回调函数内的 `this` 指向元素值,而非全局对象。使用箭头函数可能导致 `this` 丢失,建议用 `function` 关键字。 - **兼容性限制**: - 适用于 jQuery 1.0+ 版本。确保在项目中加载 jQuery 库。 - 不支持异步遍历;对于异步操作,需结合 Promise 或其他方法。 这些注意事项基于 jQuery 最佳实践[^1][^2]。 #### 总结 jQuery 的 $.each() 是一个强大的遍历工具,适用于数组对象的迭代,语法简洁灵活。通过回调函数,开发者可以高效处理数据集合,但需注意与 $().each()区别性能考量。对于 DOM 操作,优先使用 $().each() 方法以确保最佳实践[^2][^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值