2016-11-10 3 views
1

の最初の要素には...私は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> 
+1

はあなたがすべてで何かをしようとしたことがありますか? –

+0

配列のクラス名の最初の要素を "キャッチ"する方法がわかりません... – Cycle99

答えて

3

はこれを実現するために、あなたは、あなたの配列を取ることによって、その後、ループを一意の値を取得し、指定されたクラスで唯一の最初の要素を取得するためにfirst()メソッドを使用することができます。これを試してみてください:

var klassenarray = $("#holder").find("[class]").map(function() { 
 
    return this.className; 
 
}).get(); 
 

 
$.unique(klassenarray).forEach(function(c) { 
 
    $('.' + c).first().addClass('first'); 
 
});
.first { color: #C00; }
<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>

+0

ありがとう、rory!魅力のように動作します – Cycle99

0

一つこれを行う方法:

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

Working fiddle

+0

あなたは質問のロジックのポイントを逃したようです。クラス名は固定されていません。 –

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") 
       }; 
      }); 
+1

ようこそスタックオーバーフロー!このコードスニペットは問題を解決するかもしれませんが、[説明を含めて](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。あなたのコードに説明的なコメントを詰め込まないようにしてください。これは、コードと説明の両方の可読性を低下させます! – kayess

関連する問題