jQuery中的each方法实例

$.each()和$(selector).each()很相似,但是是不一样的。

前者可用于遍历一个数组或是json对象

而后者是专门用来遍历一个jQuery对象

先来说说$.each()吧,一般是这么用的

$.each(arr, function(i, v){
	// do something
})

其中arr也就是集合,也可以是json对象

而回调函数中的i则是数组的下标(在json中则是对应的key)

而v则是arr[i]的值(在json中则是对应的value)

下面来看一个简单的实例:

var json = {name:"zhu", age:10}
var arr = ['a','b','c','d']

$.each(arr, function(i, v){
	alert(i + ":" + v)
});
$.each(json, function(k, v){
	alert(k + ":" + v)
});

这样就完成了对数组和json的遍历。

当然了,如此遍历用原生的js也是可以轻松做到的

比如遍历上面的json或是arr,只需要:

for(var k in json){
	alert(k + ":" + arr[k])
}

看起来似乎还是js更简洁一些吧~性能上可能也要好一点


下面介绍$(selector).each(),这个方法在js中就不好找到替代品了。

其中$(selector)负责选中一组jQuery元素,而each函数负责遍历它

比如我们想对一组“li”改变其文字颜色

<style>
.red{
	color: red;
}
</style>
<ul>
	<li>Dog</li>
	<li>Cat</li>
	<li>Mouse</li>
</ul>
<input type="button" id="btn">
<script>
	$("#btn").click(function() {
		$("li").each(function() {
			$(this).toggleClass('red');
		});
	});
</script>

不过实际上,jQuery中存在隐式迭代的现象

每当我们调用选择器方法查找dom树里的元素时,其实就是把找到的dom元素存入一个jQuery对象里的dom数组中,然后再把这个jQuery对象返回。

而所谓隐式迭代也就是当我们调用jQuery方法时(如 toggleClass(..)),jQuery方法会遍历内部 dom数组,并调用每个dom元素的对应的dom属性或方法完成操作。

所有click中的函数并不需要使用each,直接$("li").toggleClass('red')也可以


在$(seletor).each(..)中,this被绑定到了当前遍历的DOM对象,如需获得jQuery对象$(this)就可以了

值得注意的是,还可以在遍历过程中提前退出遍历,只需要return false就可以了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值