2016-02-16 34 views
0

由於問題說我需要做類似如下的事情:
if element has className1 classFromArray prepend classFromArray。if element has className1 classFromArray prepend classFromArray

到目前爲止,我得到了這個,但它預先匹配所有匹配的數組的類名,我希望它僅預先匹配它所具有的類並匹配數組。

JSFiddle

<div class="title purple_grad"> 
    <p>mensaje</p> 
</div> 

<div class="title red_grad"> 
    <p>mensaje</p> 
</div> 

var cols = [ 
      'purple_grad', 
      'red_grad', 
      'green_grad', 
      'blue_grad' 
]; 

var e = $("div"); 
for(i=0; i < cols.length; i++) { 
    (function(i) { 
    if (e.hasClass("title") && e.hasClass(cols[i])) { 
     e.prepend(cols[i]); 
    } 
    })(i); 
} 
+0

過濾和前面加上文中給出上述您的HTML,你怎麼想的陣列看起來像到底?它應該是兩個元素「purple_grad」和「red_grad」? – mkaatman

+0

因此,在每次迭代中迭代'cols',將2個項目預置爲div .. – Rayon

回答

3

你需要一個像

var cols = [ 
 
    'purple_grad', 
 
    'red_grad', 
 
    'green_grad', 
 
    'blue_grad' 
 
]; 
 

 
var e = $("div.title"); //the hard filter can be applied here 
 
cols.forEach(function(key) { 
 
    e.filter('.' + key).prepend(key); //prepend the text after applying the class filter 
 
})
.purple_grad { 
 
    color: purple; 
 
} 
 
.red_grad { 
 
    color: red; 
 
} 
 
.green_grad { 
 
    color: green; 
 
} 
 
.blue_grad { 
 
    color: blue; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="title purple_grad"> 
 
    <p>mensaje</p> 
 
</div> 
 
<hr> 
 
<div class="title red_grad"> 
 
    <p>mensaje</p> 
 
</div>

+0

以我需要的方式工作,謝謝! – Turqueso