将类添加到数组中的第一个元素

时间:2016-11-10 08:38:19

标签: jquery arrays class

我有一个关于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>

3 个答案:

答案 0 :(得分:3)

要实现这一点,您可以获取数组,获取唯一值,然后遍历它并使用first()方法仅检索具有给定类的第一个元素。试试这个:

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

答案 1 :(得分:0)

一种方法:

$(".A:first").addClass('first')
$(".B:first").addClass('first')
$(".C:first").addClass('first')

Working fiddle

答案 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")
                };
            });