深入理解$.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 引发两次$(document.ready)事件
Jan 15 Javascript
javascript中判断json的方法总结
Aug 27 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
浅谈javascript:两种注释,声明变量,定义函数
Oct 05 Javascript
浅析vue数据绑定
Jan 17 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
Feb 12 Javascript
vue随机验证码组件的封装实现
Feb 19 Javascript
JS一次前端面试经历记录
Mar 19 Javascript
JavaScript进阶(三)闭包原理与用法详解
May 09 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实现的简易扫雷游戏实例
2015/07/09 PHP
深入理解PHP变量的值类型和引用类型
2015/10/21 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
BootStrap实现树形目录组件代码详解
2016/06/21 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
详解windows下vue-cli及webpack 构建网站(三)使用组件
2017/06/17 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
微信小程序3种位置API的使用方法详解
2019/08/05 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
微信小程序 flexbox layout快速实现基本布局的解决方案
2020/03/24 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
js加减乘除精确运算方法实例代码
2021/01/17 Javascript
python黑魔法之参数传递
2016/02/12 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
2018/04/22 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
python二进制文件的转译详解
2019/07/03 Python
Python中if有多个条件处理方法
2020/02/26 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
三年大学生活自我鉴定
2014/01/21 职场文书
总会计师岗位职责
2014/02/19 职场文书
校园绿化美化方案
2014/06/08 职场文书
幼儿园健康教育方案
2014/06/14 职场文书
最美护士演讲稿
2014/08/27 职场文书
2014年师德师风自我剖析材料
2014/09/27 职场文书
2015新年寄语大全
2014/12/08 职场文书
对学校的意见和建议
2015/06/04 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
Python几种酷炫的进度条的方式
2022/04/11 Python