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():获 ...
随机推荐
- python批量提取eml附件
从批量eml文件中提取附件,使用方式如下 代码如下 import email import os import sys #获取eml附件信息 def Get_Annex_Message(FilePat ...
- 2019_BUAAOO_第二单元总结
第一次作业:单部多线程傻瓜调度电梯 设计策略 本次作业我才用的是生产者消费者模式,创建一个RequestList类,将输入线程InputThread作为生产者,负责将请求放入RequestList:将 ...
- 【ASP】response和sever对象实现用户登录
1.问题提出 设计两个登录界面:一个register.asp页面用于输入账号,密码等信息进行登录.另一个页面welcome.asp用于显示登录成功的信息.利用request的两个对象response和 ...
- 错误:Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file
Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hsperfdat ...
- mac本webstrom破解
之前忙着加班一直没搞,有时间解决一下 首先编辑hosts文件 https://jingyan.baidu.com/article/f3ad7d0f55154309c3345bdd.html Mac系统 ...
- ubuntu tensorflow install(Ubuntu16.04+CUDA9.0+cuDNN7.5+Python3.6+TensorFlow1.5)
在网上找了很多案例,踩了许多坑,感觉比较全面的是下面介绍的 http://www.cnblogs.com/xuliangxing/p/7575586.html 先说说我的步骤: 首先安装了Anacod ...
- Python函数声明以及与其他编程语言数据类型的比较
1.函数声明 与其它大多数语言一样 Python 有函数,但是它没有像 C++ 一样的独立的头文件:或者像 Pascal 一样的分离的 interface / implementation 段.在需 ...
- [MV] - You Give REST a Bad Name
本首歌改自Bon Jovi经典歌曲"You Give Love a Bad Name". 改编的作者是Dylan Beattie, 他是Spotlight的系统架构师. 改编后的歌 ...
- BBS论坛(三十二)
32.帖子排序功能完成 (1)front_index.html <ul class="post-group-head"> {% if current_sort==1 % ...
- vue+cordova构建跨平台应用集成并使用Cordova plugin
安装 //安装 vue-cil npm install --global vue-cli //安装cordova npm i cordova -g cordova 新建项目 //新建cordova 项 ...