jQuery中each的疑问?

$("img").each(function(){       $(this).attr("src"... $("img").each(function(){         $(this).attr("src", "2.jpg");});-----------------------------------------$("img").attr("src", "2.jpg");上面这两句代码实现的效果都是一样的.但是很多人都用上面的.为什么呢?.有什么不同的地方吗? 展开
 我来答
vermilion36
推荐于2017-08-23 · TA获得超过3372个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:309万
展开全部
楼上的说法存在一点问题

each严格说来 不是循环,而是遍历 循环虽然和遍历都是可以找到每一个img元素 但 循环!=遍历
遍历的速度比循环要快得多,就像后台中的for和foreach一样
有人做过试验在同时处理30万条数据的时候 foreach比for要快0.00几秒,虽然这个数值很小,但在处理大数据的时候 还是比较可观的。
其实楼主写的两种方法都是一样的,只是对用each函数遍历的来说,比较直观性,而且可以对每选择器中每一个img进行单独操作。
方法一:
$("img").each(function(){
$(this).attr("src","2.jpg");
})
方法二:
$("img").attr("src","2.jpg");
方法三:
for(var i=0;i<$("img").length;i++)
{
$("img").eq(i).attr("src","2.jpg");
}
这三种方法很明显可以看出 方法一和方法二的处理速度是最快的,方法一的优势是可以对每一个img标签进行单独操作。而方法二,则是同时对所有img进行相同操作。
由于each有单独操作的优势,所以很多人习惯使用它,在楼主给的具体代码中,当然,当然方法二是比较好的,因为代码量少
还有 each(function(){})的function函数中可以带有一个参数
$("img").each(function(index){});这个index是告知函数当前已遍历到第几个函数了 index是从0开始的索引
百度网友5b0e900
2014-06-30 · TA获得超过459个赞
知道小有建树答主
回答量:95
采纳率:0%
帮助的人:109万
展开全部
each体现的是一种循环嘛,如果对这一组对象只做一种操作,用后面一种确实可以,但是如果需要对每个对象进行条件判断然后在操作呢,那第一种就好多了,而且针对不同的标签(特别是内部嵌套相同标签名的),第一种效果更好更准确。
在jquery里写each也是前期学javascript时留下的良好习惯。你想想,如果你用纯的javascript操作table里面的每个tr,是不是需要循环呢?答案当然是肯定的。
为什么?因为document.getElementsByTagName("tr")获取的就是一个数组,所以得循环,而jquery里面的$("tr")表示的也是一个数组,因为它具有length这个属性。length至少为1.
所以这种形式用each好点,不容易出错,当然,当你用id来操作的时候,肯定用后面一个了,因为$("#id")是唯一的嘛。$("#id").length就为0了(此句有错,length为1,当初刚学jquery几个月,一种出生牛犊的精神,为了不误人子弟,特标记。希望我当年在知道的一些被人采纳的‘不合理’回答没有误导一些人,我会找机会重新看一次我的回答,并做出适当修改!)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
音为由你所以快乐
2012-01-12
知道答主
回答量:36
采纳率:0%
帮助的人:14.1万
展开全部
.each(function() 这个是循环,function可以加参数
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式