深入理解$.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 相关文章推荐
图片之间的切换
Jun 26 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
web开发人员学习jQuery的6大理由及jQuery的优势介绍
Jan 03 Javascript
关于js中for in的缺陷浅析
Dec 02 Javascript
浅谈js数据类型判断与数组判断
Aug 29 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
vue-cli项目中使用Mockjs详解
May 14 Javascript
Vue 实现列表动态添加和删除的两种方法小结
Sep 07 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
Sep 21 Javascript
node中短信api实现验证码登录的示例代码
Jan 20 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
php将图片保存为不同尺寸图片的图片类实例
2015/03/30 PHP
PHP封装的PDO数据库操作类实例
2017/06/21 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
PHP开发API接口签名生成及验证操作示例
2020/05/27 PHP
Jqyery中同等与js中windows.onload的应用
2011/05/10 Javascript
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
JavaScript实现点击自动选择TextArea文本的方法
2015/07/02 Javascript
jQuery实现简单的网页换肤效果示例
2016/09/18 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
[01:02:53]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第二局
2016/03/06 DOTA
Python pandas常用函数详解
2018/02/07 Python
如何安装多版本python python2和python3共存以及pip共存
2018/09/18 Python
python中for循环输出列表索引与对应的值方法
2018/11/07 Python
三步实现Django Paginator分页的方法
2019/06/11 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
多个python文件调用logging模块报错误
2020/02/12 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
如何在django中实现分页功能
2020/04/22 Python
python爬虫数据保存到mongoDB的实例方法
2020/07/28 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
LN-CC中国:高端男装和女装的奢侈时尚目的地
2019/09/14 全球购物
软件测试面试题
2014/01/05 面试题
优秀大学生自荐信
2014/06/09 职场文书
土木工程专业本科生求职信
2014/10/01 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
公司奖励通知
2015/04/21 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
手残删除python之后的补救方法
2021/06/26 Python
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android