jquery each循环?jquery的each循环的参数
各位老铁们,大家好,今天由我来为大家分享jquery each循环,以及jquery的each循环的参数的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
jQuery中each的疑问
楼上的说法存在一点问题
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开始的索引
jQuery each 中使用 sleep 延迟
在JavaScript世界中,实现延时通常采用setTimeout函数,没有直接的sleep函数,需自行实现,一种推荐方法是利用Promise。
理解上述代码,sleep()函数基于Promise实现,且仅在异步函数中调用。
看一个实际案例:
目标是依次给所有获取的$('.btn-greet')元素设置背景色为绿色,且每3秒延迟一次。
然而,这段代码不可行。jQuery的each方法只检查返回值是否为false(若真则中断循环),不检查是否为Promise。利用for循环替代jQuery的each,可在循环中实现延迟执行。
修改后的代码如下:
经过测试,该代码满足需求。
jquery 如何遍历这样的json
方法挺多的把,可以用for循环,也可以用each方法。
先献上ajax请求:
$.ajax({
url:'/path/to/file',
type:'GET',
dataType:'json',
data:{param1:'value1'},
success:function(obj){
//遍历obj
}
})返回的内容在success的函数里面,所有的遍历操作都是在这里面操作的:
for循环:
varobj={
"status":1,
"bkmsg":"\u6210\u529f",
"bkdata":["\u5415\u5c1a\u5fd7","1387580400","\u6dfb\u52a0\u8bb0\u5f55"]
}
//console.log(obj.length);
if(obj.status==1){
for(vari=0;i<obj.bkdata.length;i++){
console.log(obj.bkdata[i]);
};
}else{
alert("数据有误~");
};
for in循环:
//forin循环
for(xinobj.bkdata){
//x表示是下标,来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
console.log(obj.bkdata[x]);
}
//元素 each方法
if(obj.status==1){
$(obj.bkdata).each(function(index,item){
//index指下标
//item指代对应元素内容
//this指代每一个元素对象
//console.log(obj.bkdata[index]);
console.log(item);
//console.log($(this));
});
}else{
alert("数据有误~");
};
//jquery each方法
$.each(obj.bkdata,function(index,item){
console.log(item);
});
OK,本文到此结束,希望对大家有所帮助。