jQuery 修改每个循环中的元素

Abs*_*rit 3 each jquery loops selector

使用jquery,我想循环所有具有“item”类的元素,并根据元素的索引应用不同的背景颜色。

mapcolor 是一个颜色数组(长度 = 具有“item”类的元素数)

$.each($(".item"), function(i,e){
$("#"+e).css("background-color",mapcolor[i]);
});
Run Code Online (Sandbox Code Playgroud)

$("#"+e)选择器没有按预期工作,也没有$("#"+e.id)......我的选择器有问题。任何的想法?

Jai*_*Jai 5

改用.each()方法,你必须在上下文中$(this)

$(".item").each(function(i){
  $(this).css("background-color",mapcolor[i]);
});
Run Code Online (Sandbox Code Playgroud)

然而,更好的方法是:

$(".item").css("background-color",function(){
    return mapcolor[$(this).index()];
});
Run Code Online (Sandbox Code Playgroud)

使用.css()方法并传递一个回调函数来返回值。

测试如下:

$(".item").each(function(i){
  $(this).css("background-color",mapcolor[i]);
});
Run Code Online (Sandbox Code Playgroud)
$(".item").css("background-color",function(){
    return mapcolor[$(this).index()];
});
Run Code Online (Sandbox Code Playgroud)
var mapcolor = ['green', 'red', 'yellow'];

$(".item").css("background", function() {
  return mapcolor[$(this).index()];
});
Run Code Online (Sandbox Code Playgroud)