jQuery中each的疑问?

$("img").each(function(){         $(this).attr("src", "2.jpg");});-----------------------------------------$("img").attr("src", "2.jpg");上面这两句代码实现的效果都是一样的.但是很多人都用上面的.为什么呢?.有什么不同的地方吗?

楼上的说法存在一点问题

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开始的索引
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-30
each体现的是一种循环嘛,如果对这一组对象只做一种操作,用后面一种确实可以,但是如果需要对每个对象进行条件判断然后在操作呢,那第一种就好多了,而且针对不同的标签(特别是内部嵌套相同标签名的),第一种效果更好更准确。
在jquery里写each也是前期学javascript时留下的良好习惯。你想想,如果你用纯的javascript操作table里面的每个tr,是不是需要循环呢?答案当然是肯定的。
为什么?因为document.getElementsByTagName("tr")获取的就是一个数组,所以得循环,而jquery里面的$("tr")表示的也是一个数组,因为它具有length这个属性。length至少为1.
所以这种形式用each好点,不容易出错,当然,当你用id来操作的时候,肯定用后面一个了,因为$("#id")是唯一的嘛。$("#id").length就为0了(此句有错,length为1,当初刚学jquery几个月,一种出生牛犊的精神,为了不误人子弟,特标记。希望我当年在知道的一些被人采纳的‘不合理’回答没有误导一些人,我会找机会重新看一次我的回答,并做出适当修改!)
第2个回答  2012-01-12
.each(function() 这个是循环,function可以加参数本回答被网友采纳

jQuery中each的疑问?
还有 each(function(){})的function函数中可以带有一个参数 ("img").each(function(index){});这个index是告知函数当前已遍历到第几个函数了 index是从0开始的索引

jquery的$.each疑问
不会,一旦返回数组之后,就以那个数组循环,而不是每次都重新获取。

jquery的each问题
(document).ready(function(){ $('ul').each(function(){ $(this).find('li:gt(1)').hide(); });});你的代码是在整个document中查找li,所以下面的都没了 用 this指定在当前ul下就可以了啊

为什么我 $.each(没有任何记录,有json数据,(Jquery)
echo urldecode(json_encode($arr));放到while循环外面

jQuery each的疑问
_eachArr.push(node.value);});var str = _eachArr.join(",");alert(str);\/\/第3种实现 var _mapArr = $.map($("input:hidden"),function(obj){ return obj.value;}).join(",");alert(_mapArr );---

一个关于jQuery each 函数 执行 顺序的问题
这个问题和jQuery each 函数 执行 顺序没有关系,而是和js的执行顺序有关系,这里在执行到each的时候并不是阻塞的,而是继续往下执行,所以有的时候each执行的时间长的话,下面的console就已经打印了。建议你看看js执行顺序方面的文章。如:http:\/\/www.jb51.net\/article\/44123.htm ...

jquery,each循环的问题,大神帮个忙!!!
意思是allNewTag[i] = allNewTag[i] + $(this).children().eq(1).html();又因为allNewTag[i]没有初始化值,默认就是undefined 所以到这里,你就输出了undefined111,undefined222,。。。应该allNewTag[i] = $(this).children().eq(1).html();最后在alert(allNewTag.toString());试试看 ...

jquery中的each不执行,是什么缘故
应该是执行each里面有错误 导致后面的不执行 先这样 把each里面带有操作的语句删除掉 测试下看出现www不 function jump(e) {var con = e.innerHTML;var t = false;$(".breadcrumb li").each(function(){\/\/ 这个语句可能会报错 如果当前li里面找......

jquery中each方法的问题
undefined也是一种对象啊 既然这个对象是undefined的,就不用移除了,因为本身就不存在了

jquery .each()的问题
你用.text()取的时候取的就是文本,所以那个toString()这一步省略了也是没事儿的,还有你的函数名称不对应该是txt.substr(0,3); 这个函数貌似就算长度不够也不会报错吧,应该就是因为你拼写错了

相似回答