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():获 ...
随机推荐
- SQL Server 删除重复记录,只保留一条记录
原文地址:http://blog.csdn.net/eriato/article/details/17417303 有张表格之前没有设计关键字段的唯一约束,导致有时候执行插入操作时不小心执行了多次就出 ...
- 解决java.lang.IllegalArgumentException: No converter found for return value of type
1原因:这是因为springmvc默认是没有对象转换成json的转换器的,需要添加jackson依赖. 简而言之 需要将对象转化为json对象 Jackson 是一种实现方式 <depe ...
- Linux shell 编程文件比较
文件比较允许你测试Linux 文件系统上文件和目录的状态 比较 描述 -d file 检查file是否存在并是一个目录 -e file 检查file是否存在 -f file 检查file是否存在并是 ...
- 2019_BUAAOO_第二单元总结
第一次作业:单部多线程傻瓜调度电梯 设计策略 本次作业我才用的是生产者消费者模式,创建一个RequestList类,将输入线程InputThread作为生产者,负责将请求放入RequestList:将 ...
- flume安装
1.flume安装 将压缩包减压到当前目录 tar -zxf apache-flume-1.8.0-bin.tar.gz 配置环境变量 编辑当前目录中的 .bashrc 文件(这影响当前用户的环 ...
- python-邮件提醒功能
当scrapy爬取完成以后会发送详细信息到邮箱 1.首先编写邮件发送模块 #!usr/bin/env python # -*- coding:utf-8 -*- """ ...
- for循环语句/命名函数
for(1.表达式1;2.表达式2;3.表达式3){ 4.循环体语句; } 先执行1,在执行2表达式,如果2的表达式为false的话直接退出循环, 如果2的表达式结果为true,执行4,执行3,执行2 ...
- 根据excel表格字段生成sql语句
根据excel表格字段生成sql语句 1.1 前言 根据excel表格字段生成sql语句主要是利用了excel的拼接函数 CONCATENATE .该实例主要以mysql脚本支持.实例需求如下:exc ...
- WebGL绘制有宽度的线
WebGL中有宽度的线一直都是初学者的一道门槛,因为在windows系统中底层的渲染接口都是D3D提供的,所以无论你的lineWidth设置为多少,最终绘制出来的只有一像素.即使在移动端可以设置有宽度 ...
- 【设计经验】5、Verilog对数据进行四舍五入(round)与饱和(saturation)截位
一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2 Matlab2016a 仿真工具:Vivado自带仿真器 二.引言 在利用 ...