深入理解$.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 相关文章推荐
一步一步制作jquery插件Tabs实现过程
Jul 06 Javascript
js 函数的副作用分析
Aug 23 Javascript
从js向Action传中文参数出现乱码问题的解决方法
Dec 29 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
Feb 28 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
Jun 12 Javascript
vue2中引用及使用 better-scroll的方法详解
Nov 15 Javascript
详解Vue-axios 设置请求头问题
Dec 06 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
May 12 Javascript
vue 获取视频时长的实例代码
Aug 20 Javascript
在微信小程序中使用mqtt服务的方法
Dec 13 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 Javascript
vue制作toast组件npm包示例代码
Oct 29 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
PHP写杨辉三角实例代码
2011/07/17 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
php阳历转农历优化版
2016/08/08 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
js 控制页面跳转的5种方法
2013/09/09 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
JS实现灵巧的下拉导航效果代码
2015/08/25 Javascript
js数组常见操作及数组与字符串相互转化实例详解
2015/11/10 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
2015/11/25 Javascript
利用BootStrap弹出二级对话框的简单实现方法
2016/09/21 Javascript
javascript稀疏数组(sparse array)和密集数组用法分析
2016/12/28 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
nodejs前端模板引擎swig入门详解
2018/05/15 NodeJs
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
three.js利用卷积法如何实现物体描边效果
2019/11/27 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
python使用pymysql实现操作mysql
2016/09/13 Python
python运行其他程序的实现方法
2017/07/14 Python
python实现自动发送邮件发送多人、群发、多附件的示例
2018/01/23 Python
Python中logging.NullHandler 的使用教程
2018/11/29 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
2021/02/25 Python
怎样比较两个类型为String的字符串
2016/08/17 面试题
马云的职业生涯规划之路
2014/01/01 职场文书
新闻编辑自荐书范文
2014/02/12 职场文书
党的群众路线调研报告
2014/11/03 职场文书
转让协议书
2015/01/27 职场文书
酒会邀请函
2015/01/31 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
golang日志包logger的用法详解
2021/05/05 Golang
golang switch语句的灵活写法介绍
2021/05/06 Golang
HTML5页面打开微信小程序功能实现
2022/09/23 HTML / CSS