深入理解$.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 相关文章推荐
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
Apr 07 Javascript
DWZ table的原生分页浅谈
Mar 01 Javascript
让低版本浏览器支持input的placeholder属性(js方法)
Apr 03 Javascript
基于ajax实现文件上传并显示进度条
Aug 03 Javascript
基于jQuery插件实现点击小图显示大图效果
May 11 Javascript
js鼠标单击和双击事件冲突问题的快速解决方法
Jul 11 Javascript
Bootstrap3多级下拉菜单
Feb 24 Javascript
ReactNative短信验证码倒计时控件的实现代码
Jul 20 Javascript
使用webpack-dev-server处理跨域请求的方法
Apr 18 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
vue 实现强制类型转换 数字类型转为字符串
Nov 07 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 17 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下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
laravel Model 执行事务的实现
2019/10/10 PHP
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
js与jquery回车提交的方法
2015/02/03 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
js接收并转化Java中的数组对象的方法
2016/08/11 Javascript
原生JS实现幻灯片
2017/02/22 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
JS点击图片弹出文件选择框并覆盖原图功能的实现代码
2017/08/25 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
vue中v-for循环给标签属性赋值的方法
2018/10/18 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
python中的对象拷贝示例 python引用传递
2014/01/23 Python
web.py在模板中输出美元符号的方法
2014/08/26 Python
Python远程桌面协议RDPY安装使用介绍
2015/04/15 Python
django项目搭建与Session使用详解
2018/10/10 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
Django分页功能的实现代码详解
2019/07/29 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
医药工作者的求职信范文
2013/09/21 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
小学科学课教学反思
2016/02/23 职场文书
Redis的字符串是如何实现的
2021/10/24 Redis
Python几种酷炫的进度条的方式
2022/04/11 Python