深入理解$.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 学习笔记 防止发生命名冲突
Jul 30 Javascript
一个JavaScript去除字符串末尾的空白实例代码
Sep 22 Javascript
如何实现移动端浏览器不显示 pc 端的广告
Oct 15 Javascript
javascript图片滑动效果实现
Jan 28 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
May 17 Javascript
省市二级联动小案例讲解
Jul 24 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
Nov 12 Javascript
微信小程序对接七牛云存储的方法
Jul 30 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php数组指针操作详解
2017/02/14 PHP
Laravel修改验证提示信息为中文的示例
2019/10/23 PHP
JavaScript面象对象设计
2008/04/28 Javascript
商城常用滚动的焦点图效果代码简单实用
2013/03/28 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
继续学习javascript闭包
2015/12/03 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
jquery实现表单获取短信验证码代码
2017/03/13 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
浅谈struts1 & jquery form 文件异步上传
2017/05/25 jQuery
收藏AngularJS中最重要的核心功能
2017/07/09 Javascript
React Native仿美团下拉菜单的实例代码
2017/08/08 Javascript
node.js基于express使用websocket的方法
2017/11/09 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
JS常见面试试题总结【去重、遍历、闭包、继承等】
2019/08/27 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
Python如何进行时间处理
2020/08/06 Python
python 如何将office文件转换为PDF
2020/09/22 Python
MySQL面试题目集锦
2016/04/14 面试题
卫校中专生的自我评价
2014/01/15 职场文书
大学生作弊检讨书
2014/02/19 职场文书
挂职学习心得体会
2014/09/09 职场文书
2015年办公室工作总结范文
2015/03/31 职场文书
陶瓷类经典广告语集锦
2019/10/25 职场文书
Matlab求解数组中的最大值及它所在的具体位置
2021/04/16 Python
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
Python读写yaml文件
2022/03/20 Python