Jquery修改每个循环中的元素

时间:2015-08-19 10:30:51

标签: jquery loops each selector

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

mapcolor是一个颜色数组(长度=具有&#34的元素数量;项目"类)

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

$("#"+e)选择器没有按预期工作,$("#"+e.id) ... 我的选择器出了点问题。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

使用.each()方法,您必须使用$(this)进入上下文:

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

更好的方法是:

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

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

测试如下:



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>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

是问题在你的选择器中...... 这个问题就像

$("#"+e).css("background-color",mapcolor[i]);

为什么你使用#with e,因为#代表id .. 但这里e表示循环中当前选定的标签

所以简单地使用$(e).css(“background-color”,mapcolor [i]);在你的方式..

或简短且更好的方式使用此

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

答案 2 :(得分:0)

尝试这样的事情:

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