Jquery 修改每个循环中的元素
Jquery modify elements in each loop
使用 jquery,我想循环所有具有 class "item" 的元素,并根据元素的索引应用不同的背景颜色。
mapcolor 是一个颜色数组(长度 = "item" class 的元素数)
$.each($(".item"), function(i,e){
$("#"+e).css("background-color",mapcolor[i]);
});
$("#"+e)
选择器没有按预期工作,$("#"+e.id)
...
我的选择器出了点问题。有什么想法吗?
请改用 .each()
方法,并且您必须处于 $(this)
的上下文中:
$(".item").each(function(i){
$(this).css("background-color",mapcolor[i]);
});
但更好的方法是:
$(".item").css("background-color",function(){
return mapcolor[$(this).index()];
});
使用 .css()
方法并将回调函数传递给 return 值。
测试如下:
var mapcolor = ['green', 'red', 'yellow'];
$(".item").css("background", function() {
return mapcolor[$(this).index()];
});
div{height:10px;}
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
尝试这样的事情:
$( ".item" ).each(function(i) {
$(this).css("background-color",mapcolor[i]);
});
是的,问题出在您的选择器中...
问题是这样的
$("#"+e).css("background-color",mapcolor[i]);
为什么你将#与e一起使用,因为#代表id ..
但这里 e 代表循环中当前选择的标签
所以只需使用 $(e).css("background-color",mapcolor[i]);以你的方式..
或者使用这个
的更短更好的方法
$(".item").each(function(i){
$(this).css("background-color",mapcolor[i]);
});
使用 jquery,我想循环所有具有 class "item" 的元素,并根据元素的索引应用不同的背景颜色。
mapcolor 是一个颜色数组(长度 = "item" class 的元素数)
$.each($(".item"), function(i,e){
$("#"+e).css("background-color",mapcolor[i]);
});
$("#"+e)
选择器没有按预期工作,$("#"+e.id)
...
我的选择器出了点问题。有什么想法吗?
请改用 .each()
方法,并且您必须处于 $(this)
的上下文中:
$(".item").each(function(i){
$(this).css("background-color",mapcolor[i]);
});
但更好的方法是:
$(".item").css("background-color",function(){
return mapcolor[$(this).index()];
});
使用 .css()
方法并将回调函数传递给 return 值。
测试如下:
var mapcolor = ['green', 'red', 'yellow'];
$(".item").css("background", function() {
return mapcolor[$(this).index()];
});
div{height:10px;}
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
尝试这样的事情:
$( ".item" ).each(function(i) {
$(this).css("background-color",mapcolor[i]);
});
是的,问题出在您的选择器中... 问题是这样的
$("#"+e).css("background-color",mapcolor[i]);
为什么你将#与e一起使用,因为#代表id .. 但这里 e 代表循环中当前选择的标签
所以只需使用 $(e).css("background-color",mapcolor[i]);以你的方式..
或者使用这个
的更短更好的方法$(".item").each(function(i){
$(this).css("background-color",mapcolor[i]);
});