搞懂$.each和$(selector).each

$.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对象

})

}

时间: 2024-10-14 12:15:17

搞懂$.each和$(selector).each的相关文章

初学者都应该搞懂的问题

如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列. 问题一:下面声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”.这样模糊的回答通常是概念不清的根源.如果要准确的回答,一半的人大概会回答错误. 这个语句声明的是一个指向对象的引用,名为“s”,可以指向类型为String的任 何对象,目前指向"Hello world!&q

好程序员web前端教程分享初学者搞懂i++和++i

刚学习前端的同学,在学到++运算符的时候,都是一脸的懵 var k = 10; console.log(k++ + ++k + k++) //34 var i = 10; console.log(++i + i++ + ++i) //35 console.log(i++ + ++i + i++) //43 way???为什么?为什么?为什么? 下面我们一步一步的来看: 1. var i = 10; 2 .i++; //等价于i=i+1 3 .console.log(i); //11 ###++可

海明码一篇文章彻底搞懂

海明码学习前提 记住几个要点: 不要用异或套用公式!!!!题目随便变几个变死你! 看完这篇博客不要看别的博客!!!!别的人瞎写的坑死你 学习海明码之前,我们要约定3个原则: 海明码只能检测出2位错,纠1位错(因此不要问如果3位错怎么办等幼稚问题). 海明码默认进行偶校验(除非特殊说明使用奇校验). 海明码是一串由0和1组成的序列(除01外没有其他的值,记住了!这是重点) 如果下面有任何无法理解的问题,反复看上面三个原则,下面再也不赘述. 前提:奇偶校验 奇校验:这串序列1的个数如果为偶数则在前面

什么是降准?一文帮你彻底搞懂

昨天,是元旦佳节,央行发出一则消息:降准0.5个百分点. 今天,股市应声高开大涨. 为什么降准会引起股市大涨呢?还会对其它产生影响吗? 接下来,牛大给大家聊聊降准是怎么回事. 首先,什么是降准呢,有的朋友可能还一头雾水. 降准是降低存款准备金率的缩写. 先来看看定义: 存款准备金是指金融机构为保证客户提取存款和资金清算需要而准备的,是缴存在央行的存款,央行要求的存款准备金占其存款总额的比例就是存款准备金率. 牛大再给朋友们解释一下,大家伙别嫌牛大啰嗦~ 咱们把钱存到银行,银行把钱借出去,银行赚取

以太坊中RLP编码详解一文全搞懂

定义 RLP(Recursive Length Prefix,递归长度前缀)是一种编码算法,用于编码任意的嵌套结构的二进制数据,它是以太坊中数据序列化/反序列化的主要方法,区块.交易等数据结构在持久化时会先经过RLP编码后再存储到数据库中. RLP编码的定义只处理两类数据:一类是字符串(例如字节数组),一类是列表.字符串指的是一串二进制数据,列表是一个嵌套递归的结构,里面可以包含字符串和列表,例如["cat",["puppy","cow"],&q

CSS 背景

CSS 背景 CSS 背景属性用于定义HTML元素的背景. CSS 属性定义背景效果: background-color background-image background-repeat background-attachment background-position 背景颜色 background-color 属性定义了元素的背景颜色. 页面的背景颜色使用在body,h1,p,div的选择器中: body {background-color:#b0c4de;} h1 {backgroun

dataTables的用法

原地址:http://blog.csdn.net/mickey_miki/article/details/8240477 1.DataTables的默认配置 $(document).ready(function() {$('#id名').dataTable();} ); 2.DataTables的一些基础属性配置 "bPaginate": true, //翻页功能"bLengthChange": true, //改变每页显示数据数量"bFilter&quo

基于Multisim的buck降压斩波电路仿真

和boost电路相反,buck电路为DC-DC降压电路,搞了一下仿真发现低压情况下降压效率比較高,电压略微高一点降压效率就不敢恭维了. .不知道是怎么回事 仿真电路: 占空比D设置了0.5, U0=Ui*D ,所以输出电压理论计算值为0.5V 观察示波器能够看到输出电压接近0.5v,但假设输入电压高一点,输出电压则会全然偏离公式计算值..至今没搞懂

jqyery dataTable 基本用法

一:官方网站:[http://www.datatables.net/] 二:基本使用:[http://www.guoxk.com/node/jquery-datatables] 1.DataTables的默认配置 $(document).ready(function() {$('#example').dataTable();} ); 示例:http://www.guoxk.com/html/DataTables/Zero-configuration.html 2.DataTables的一些基础属