深入理解$.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实现unicode和字符的互相转换
Jul 18 Javascript
Javascript 验证上传图片大小[客户端]
Aug 01 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
js局部刷新页面时间具体实现
Jul 04 Javascript
jquery自动填充勾选框即把勾选框打上true
Mar 24 Javascript
禁止按回车键提交表单的方法
Jun 11 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
Sep 01 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
Sep 04 Javascript
AngularJS入门教程之Cookies读写操作示例
Nov 02 Javascript
JavaScript面向对象继承原理与实现方法分析
Aug 09 Javascript
vue实现与安卓、IOS交互的方法
Nov 02 Javascript
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
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
用libTemplate实现静态网页的生成
2006/10/09 PHP
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
PHP5与MySQL数据库操作常用代码 收集
2010/03/21 PHP
php实现aes加密类分享
2014/02/16 PHP
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
离开当前页面前使用js判断条件提示是否要离开页面
2014/05/02 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
js闭包的用途详解
2014/11/09 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
在javascript中随机数 math random如何生成指定范围数值的随机数
2015/10/21 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
基于jquery实现瀑布流布局
2020/06/28 Javascript
node.js实现快速截图
2016/08/27 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
2017/08/08 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
如何实现双向绑定mvvm的原理实现
2019/05/28 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
使用python分析git log日志示例
2014/02/27 Python
python使用post提交数据到远程url的方法
2015/04/29 Python
Python base64编码解码实例
2015/06/21 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
Python单元测试实例详解
2018/05/25 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
广州喜创信息技术有限公司JAVA软件工程师笔试题
2012/10/17 面试题
个人银行贷款担保书
2014/04/01 职场文书
李开复演讲稿
2014/05/24 职场文书
秋季运动会广播稿(30篇)
2014/09/13 职场文书
2014年业务工作总结
2014/11/17 职场文书
2016学习依法治国心得体会
2016/01/15 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书