深入理解$.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 快捷键设置实现代码
Mar 13 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
Bootstrap风格的WPF样式
Dec 07 Javascript
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
Dec 15 Javascript
基于webpack-hot-middleware热加载相关错误的解决方法
Feb 22 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
Sep 14 Javascript
小程序自动化测试的示例代码
Aug 11 Javascript
详解JavaScript中的this指向问题
Feb 05 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
1.PHP简介
2006/10/09 PHP
PHP教程 基本语法
2009/10/23 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
Laravel 5框架学习之Eloquent 关系
2015/04/09 PHP
php使用MySQL保存session会话的方法
2015/06/18 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
js格式化金额可选是否带千分位以及保留精度
2014/01/28 Javascript
使用原生js写的一个简单slider
2014/04/29 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
jQuery中innerWidth()方法用法实例
2015/01/19 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
Javascript点击按钮随机改变数字与其颜色
2016/09/01 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
Vue.use源码分析
2017/04/22 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
浅谈一种让小程序支持JSX语法的新思路
2019/06/16 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
Vue实现浏览器打印功能的代码
2020/04/17 Javascript
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
草莓网美国官网:Strawberrynet USA
2016/12/11 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
Oracle性能调优原则
2012/05/03 面试题
材料专业毕业生求职信
2014/02/26 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
作文评语集锦大全
2014/04/23 职场文书
有子女的离婚协议书怎么写(范本)
2014/09/29 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
苹果电脑mac os中货币符号快捷输入
2022/02/17 杂记