Jquery each() 总是使用最后一个对象属性

Posted

技术标签:

【中文标题】Jquery each() 总是使用最后一个对象属性【英文标题】:Jquery each() always using last objects attribute 【发布时间】:2013-05-20 21:55:39 【问题描述】:

我正在尝试使用某个类遍历页面上的所有元素,然后动态设置样式颜色。 问题是它总是使用最后一个对象的颜色属性,我不知道为什么,当我记录颜色时它总是不同的? 这是我的代码:

var find= $("."+id);
find.each(function(index, element) 
    var colour = $(this).attr('colour');

    var top = $("."+id + ".top");
    var mid = $("."+id + ".middle");
    var bot = $("."+id + ".bottom");
    top.attr("style","border-bottom: 27px solid "+colour);

    mid.attr("style","background:"+colour);

    bot.attr("style","border-top: 27px solid "+colour);

);

有人知道我做错了什么吗? 非常感谢!

编辑: 这是 html

<div class="hex-row">
 <a href="">
  <div class="hex ">
   <div class="top image" colour="#E1BB4E"></div>
   <div class="middle image" colour="#E1BB4E"></div>
   <div class="bottom image" colour="#E1BB4E"></div>
 </div>
</a>
<a href="">
 <div class="hex ">
  <div class="top publishing" colour="#A34F70"></div>
  <div class="middle publishing" colour="#A34F70"></div>
  <div class="bottom publishing" colour="#A34F70"></div>
</div>
</a>
</div>

问题不在于找到 div——代码针对的是正确的元素——而是将它们全部设置为相同的颜色,它应该抓取每个元素 attr('color') 并使用该颜色。

【问题讨论】:

$("."+id)中的id代表什么? colour 不是有效的 attribute 使用 data 属性代替。您发布的代码不足以让我们为您提供帮助。显示更多。 Id in $("."+id) 代表“图像”或“发布”,具体取决于单击了哪个按钮。 @matt - 我刚刚更新了我的答案。它应该工作! 【参考方案1】:

似乎发生这种情况是因为您没有更改“id”变量。因此,每次迭代都为相同的元素设置新颜色,最后颜色等于“find”变量中最后一个元素的“color”属性。

【讨论】:

以上是关于Jquery each() 总是使用最后一个对象属性的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 使用 $.each 遍历对象

jQuery .each() 只显示最后一个或第一个值

Jquery之each函数详解

如何使用 jquery each() 方法在数组中追加多个对象

JQuery源码分析

jQuery 每个总是排序吗?