我有一个关于jQuery数组元素的简单问题......
<div id="holder">
<div class="A">A</div>
<div class="A">A</div>
<div class="A">A</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
</div>
和JS:
var klassenarray = $("#holder").find("[class]").map(function() {
return this.className;
}).get();
alert(klassenarray);
给我:
A,A,A,B,B,B,B,C,C,C,C,C
现在我需要为每个具有相同className的元素添加一个名为first的类。像那样:
<div id="holder">
<div class="A first">A</div>
<div class="A">A</div>
<div class="A">A</div>
<div class="B first">B</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="C first">C</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
</div>
答案 0 :(得分:3)
要实现这一点,您可以获取数组,获取唯一值,然后遍历它并使用first()
方法仅检索具有给定类的第一个元素。试试这个:
var klassenarray = $("#holder").find("[class]").map(function() {
return this.className;
}).get();
$.unique(klassenarray).forEach(function(c) {
$('.' + c).first().addClass('first');
});
&#13;
.first { color: #C00; }
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="holder">
<div class="A">A</div>
<div class="A">A</div>
<div class="A">A</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="B">B</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
<div class="C">C</div>
</div>
&#13;
答案 1 :(得分:0)
一种方法:
$(".A:first").addClass('first')
$(".B:first").addClass('first')
$(".C:first").addClass('first')
答案 2 :(得分:0)
var previousClazz="";
$("#holder > div").each(function(index,item){
if(previousClazz==$(item).attr("class")){
}else{
previousClazz=$(item).attr("class");
$(item).attr("class",$(item).attr("class")+" first")
};
});