深入理解$.each和$(selector).each


Posted in Javascript onMay 15, 2016

$.each:该方法用于遍历任何集合,包括数组和对象

$(selector).each:该方法用于遍历Jquery对象

语法:$.each(obj,callback,args)

①遍历数组

var arry = ["a","b","c","d",…];

$.each(arry,function(index,value){…})

回调函数中:index 代表数组的索引 ,value 代表数组中的值

②遍历Json对象

var json = {key1:value1, key2:value2, key3:value3}

$.each(json, function(key,value){…})

回调函数中:key 代表json对象中的key, value 代表json对象中的value

③遍历Jquery对象

var doms = $("div");//Jquery对象本身是一个集合,通过索引的方式可以将Jquery对象转换为Dom对象

$.each(doms, function(index,value){..})

回调函数中:index 代表Jquery对象中的索引, value 代表Jquery对象中的dom对象,也可以通过this得到同样的dom对象

对于③还有另外一种写法就是 $("div").each(function(index,value){…})

对于$.each方法可以通过在回调函数中return false退出循环,如果return true 则相当于for循环中的continue

疑问:为什么$().each回调函数中的this不是Jquery对象 而是Dom对象

由于$().each方法的本质是通过调用$.each实现的,通过分析$.each源码可知,我们可以看到callback.apply(object[i++],args)这段代码

对于$().each传进去的object正是Jquery对象,而object[i++]将Jquery对象转换为dom对象,再根据apply方法劫持对象的特性,那么回调函数中的this就被改变成了dom对象

我们经常在Jquery插件中看到这种写法,通过上面的分析,我想就应该懂了

$.fn.test = function(option){

return this.each(function(){//这个this是Jquery对象

alert(this);//而这个this却是Dom对象

})

}

以上这篇深入理解$.each和$(selector).each就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js获得鼠标的坐标值的方法
Mar 13 Javascript
JavaScript设置获取和设置属性的方法
Mar 04 Javascript
超精准的javascript验证身份证号的具体实现方法
Nov 18 Javascript
PassWord输入框代码分享
Jun 07 Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 Javascript
JS中SetTimeout和SetInterval使用初探
Mar 23 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
Dec 15 Javascript
用ES6写全屏滚动插件的示例代码
May 02 Javascript
Vuejs+vue-router打包+Nginx配置的实例
Sep 20 Javascript
详解JavaScript作用域、作用域链和闭包的用法
Sep 03 Javascript
原生js实现自定义滚动条
Jan 20 Javascript
js中最容易被忽视的事件问题大总结
May 15 #Javascript
jquery点击改变class并toggle的实现代码
May 15 #Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
May 15 #Javascript
浅析js绑定事件的常用方法
May 15 #Javascript
js添加事件的通用方法推荐
May 15 #Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 #Javascript
JQuery validate插件Remote用法大全
May 15 #Javascript
You might like
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php文件缓存类用法实例分析
2015/04/22 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
jquery select选中的一个小问题
2009/10/11 Javascript
JavaScript具有类似Lambda表达式编程能力的代码(改进版)
2010/09/14 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
Webpack之tree-starking 解析
2018/09/11 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
js 将多个对象合并成一个对象 assign方法的实现
2020/09/24 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
jQuery+ajax实现文件上传功能
2020/12/22 jQuery
python 实现堆排序算法代码
2012/06/05 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
Python 分享10个PyCharm技巧
2019/07/13 Python
python list多级排序知识点总结
2019/10/23 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
keras分类模型中的输入数据与标签的维度实例
2020/07/03 Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
2020/11/26 Python
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
yy结婚证婚词
2014/01/10 职场文书
汽车销售员如何做职业生涯规划
2014/02/16 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
欢送会主持词
2015/07/01 职场文书
SQL SERVER中的流程控制语句
2022/05/25 SQL Server