2016-11-10 65 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

歡迎來到Stack Overflow!儘管這段代碼可以解決這個問題,但[包括一個解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess