JQuery官方学习资料(译):遍历JQuery对象和非JQuery对象
- $.each()
var sum = 0; var arr = [ 1, 2, 3, 4, 5 ]; for ( var i = 0, l = arr.length; i < l; i++ ) { sum += arr[ i ]; } console.log( sum ); // 15 $.each( arr, function( index, value ){ sum += value; }); console.log( sum ); // 15 |
需要注意的是我们不需要通过arr[ index ]来访问$.each()迭代的值。
var sum = 0; var obj = { foo: 1, bar: 2 } for (var item in obj) { sum += obj[ item ]; } console.log( sum ); // 3 $.each( obj, function( key, value ) { sum += value; }); console.log( sum ); // 3 |
需要注意的是$.each()可以用来迭代plain对象,、数组和非JQuery集合的类数组对象,JQuery集合需要使用.each()。
// 以下代码是错误的 $.each( $( "p" ), function() {}); |
- .each()
<ul> <li><a href="#">Link 1</a></li> <li><a href="#">Link 2</a></li> <li><a href="#">Link 3</a></li> </ul> $( "li" ).each( function( index, element ){ console.log( $( this ).text() ); }); // Link 1 // Link 2 // Link 3 |
- 第二参数
$( "li" ).each( function( index, listItem ) { this === listItem; // true $.ajax({ success: function( data ) { // 上下文发生改变了 this !== listItem; // true } }); }); |
- 有时候.each()不是必要的
$( "li" ).each( function( index, el ) { $( el ).addClass( "newClass" ); }); $( "li" ).addClass( "newClass" ); |
也有一些方法是不能进行遍历的,这时就需要 .each()的帮助了。例如:
// 无法运行的 $( "input" ).val( $( this ).val() + "%" ); // .val() 不能改变执行上下文,所以这里this === window $( "input" ).each( function( i, el ) { var elem = $( el ); elem.val( elem.val() + "%" ); }); |
- .attr() (getter)
- .css() (getter)
- .data() (getter)
- .height() (getter)
- .html() (getter)
- .innerHeight()
- .innerWidth()
- .offset() (getter)
- .outerHeight()
- .outerWidth()
- .position()
- .prop() (getter)
- .scrollLeft() (getter)
- .scrollTop() (getter)
- .val() (getter)
- .width() (getter)
$( "input" ).each( function( i, el ) { var elem = $( el ); elem.val( elem.val() + "%" ); }); $( "input" ).val(function( index, value ) { return value + "%"; }); |
- .map()
var newArr = []; $( "li" ).each( function() { newArr.push( this.id ); }); $( "li" ).map( function(index, element) { return this.id; }).get(); |
需要注意的是,.get()连接在最后面,.map()返回的是一个JQuery包裹集合,即使回调函数返回的是字符串。.get()返回的是一个基本的JavaScript数组。如果想要拼接字符串,可以在数组方法.get()之后连接原生JavaScript方法 .join()。
- $.map()
<li id="a"></li> <li id="b"></li> <li id="c"></li> <script> var arr = [{ id: "a", tagName: "li" }, { id: "b", tagName: "li" }, { id: "c", tagName: "li" }]; // 返回 [ "a", "b", "c" ] $( "li" ).map( function( index, element ) { return element.id; }).get(); // 返回 ["a", "b", "c"] $.map( arr, function( value, index ) { return value.id; }); </script> |
JQuery官方学习资料(译):遍历JQuery对象和非JQuery对象的更多相关文章
- JQuery官方学习资料(译):JQuery对象
每当创建一个新的元素(或者选择一个已经存在的元素)时,JQuery将返回一个元素的集合.大部分的开发人员新接触JQuery的时候,都把这个集合当做数组.这个集合中的DOM元素有从零开始的索引, ...
- JQuery官方学习资料(译):避免与其他库的冲突
避免与其他库的冲突 JQuery库和它所有的插件都是包含在jQuery命名空间下的,作为一般规则,全局对象被存储在jQuery的命名空间内,所以你不会得到jQuery和任何其他库之间的冲突(例 ...
- JQuery官方学习资料(译):遍历
一旦你通过JQuery创建了选择器,你就可以对此进行更为深入的遍历.遍历可以分为三个基本组成部分,父节点.子节点和兄弟节点.JQuery为这些部分提供了许多丰富易用的方法. <div c ...
- JQuery官方学习资料(译):Utility方法
JQuery提供了一些utility方法在$命名空间里,这些方法对完成常规的编程任务非常有帮助. $.trim() 删除前后部的空白内容. // 返回 "lots of ex ...
- JQuery官方学习资料(译):类型
类型 JavaScript提供了多个内置数据类型.除了这些,这份文档还将介绍一些虚拟类型,例如选择器.伪类.事件等. String 在JavaScript中字符串是一个不可变的对象,它包含无. ...
- JQuery官方学习资料(译):使用JQuery的.index()方法
.index()是一个JQuery对象方法,一般用于搜索JQuery对象上一个给定的元素.该方法有四种不同的函数签名,接下来将讲解这四种函数签名的具体用法. 无参数的.index() < ...
- JQuery官方学习资料(译):Data方法
你可能经常会想需要通过元素来存储一些数据.在JavaScript中你可能需要给元素添加属性来实现这样的功能,但是在某些浏览器中,你可能还需要处理因此造成的内存泄露问题.JQuery提供了一个简 ...
- JQuery官方学习资料(译):CSS
JQuery提供了一个处理方法,可以获取或设置元素的CSS属性. // 获取 CSS 属性 $( "h1" ).css( "fontSize" ); / ...
- JQuery官方学习资料(译):操作元素
获取和设置元素的信息 有很多种方式可以改变现有的元素,最常见的是改变HTML内容或者元素的属性.JQuery提供了简单的夸浏览器的方法来帮助你实现元素信息的获取和设置. .html():获 ...
随机推荐
- Java_循环
遍历数组: 一个栗子: public class Test01 { public static void main(String[] args) { int[] aa = {19,92,12,03,4 ...
- go语言基础之range
在go语言中,遍历数据或切片时可以用range,range会产生两个值,分别是数据的索引与值: package main import "fmt" func main() { x ...
- ArcMap AddIn之下载ArcGIS Server地图服务中的数据
涉及到开发知识点1.ArcGIS Server地图服务 2.C# web请求获取数据 3.AddIN开发技术 工具界面: 具体涉及到的代码之后有空贴出来.先上工具 AddIn插件下载地址:点击这里下载 ...
- linux下SS 网络命令详解
ss命令用来显示处于活动状态的套接字信息. ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容. 但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比n ...
- 带parent指针的successor求解
题目: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点(不存在重复数据).树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 思路: 如果当前节点有右孩子,则下一个节点是右孩子中 ...
- [Swift]LeetCode46. 全排列 | Permutations
Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2,3] O ...
- [Swift]LeetCode946. 验证栈序列 | Validate Stack Sequences
Given two sequences pushed and popped with distinct values, return true if and only if this could ha ...
- shell 删除重复文件脚本
摘自 <Linux Shell脚本攻略>一书,例子在109页,原理在110页,原理讲解的很好哦! 需要了解awk命令.xargs,脚本中所用的命令在Linux Shell脚本攻略一书中都有 ...
- Python档案袋( 进程与协程 )
Python的进程和线程是使用的操作系统的原生线程和进程,其是去调用操作系统的相应接口实现 进程:之间不可直接共享数据,是资源的集合,进程必须有一个线程 线程:基于进程,之间可直接共享数据,可执行,只 ...
- 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字(python)(原创)
背景: 电话面试&手撕代码 2019.03.22 Mufasa 问题: 一串数字中,只有一个数字出现一次,其他数字都出现两次,查找出这个数字 条件: 这串数字是有序数 解决方法: 核心代码只有 ...