2012-03-23 53 views
1

我有這個字符串的數字var array = 1,6,2,9,5這是從API中檢索,所以我可以真正改變它的方式。顯示類別存在於一個數字字符串中

,我有這個在我的html:

<div class="1 btn">Foo 1</div> 
<div class="2 btn">Foo 2</div> 
<div class="3 btn">Foo 3</div> 
<div class="4 btn">Foo 4</div> 
<div class="5 btn">Foo 5</div> 
<div class="6 btn">Foo 6</div> 
<div class="7 btn">Foo 7</div> 
<div class="8 btn">Foo 8</div> 
<div class="9 btn">Foo 9</div> 

我要上存在到數組類「foo」任何類添加。所以在我的例子中,div的1,6,2,9,5將獲得'foo'類。

我該如何做到這一點?

+0

是'1,6,2,9,5'字符串嗎? – Jon 2012-03-23 12:21:22

+0

可能它應該是'[1,6,2,9,5]'。在他們的問題中,人們對自己不喜歡破碎的樣本代碼。 – Pointy 2012-03-23 12:22:58

回答

4

一個快速的方法:

$('.' + array.join(', .')).addClass('foo'); 

編輯 —如果 「數組」 實際上是一個字符串:

$('.' + array.split(',').join(', .')).addClass('foo'); 
+2

一行,不錯:) – slash197 2012-03-23 12:25:34

+0

謝謝。我剛剛提到,它不是一個數組,而是一個字符串,因爲我得到這個錯誤:Uncaught TypeError:Object 1,6,2,9,5 has no method'join' – jQuerybeast 2012-03-23 12:34:46

+0

好吧,就像我說的那樣,重要的是要準確你的問題:-) – Pointy 2012-03-23 12:40:09

0

試試這個:

for (var i=0; i<array.length; i++) 
{ 
    $('.' + array[i]).addClass('foo'); 
} 
2

您可以利用事實上,jQuery將允許你多選用逗號分隔的口服補液鹽,這是非常接近你已經擁有:

如果array真的是一個數組:

$("." + array.join(", .")).addClass("foo"); 

如果它是一個字符串(例如"1,2,3")代替:

$("." + array.replace(/,/g, ", .")).addClass("foo"); 
+0

謝謝。我錯了我的問題,它是一個字符串。當我使用第二個選項時,只有前兩個字符串才能獲得該類。當我使用console.log(array.replace(「,」,「,。」);我得到1,.6,2,9,5 – jQuerybeast 2012-03-23 12:38:24

+0

@jQuerybeast:這是我的錯誤(我總是忘記如何'replace'並不能代替所有的事件,除非你給它一個正則表達式作爲第一個參數)編輯答案來解決。 – Jon 2012-03-23 12:46:25

0

使用ES5 .somehttp://jsfiddle.net/rkknp/1/

var array = [1, 6, 2, 9, 5]; 

// filter elements that have a class apparent in the array 
$(".btn").filter(function() { 
    return array.some($.fn.hasClass.bind($(this))); 
}).addClass("red");​ 
0

這應該工作。請注意,我在此代碼中使用jQuery

var yourArray = [1,6,2,9,5]; 
var elements = $('div'); 

for(var i=0; i<yourArray.length; i++){ 
    $(elements[yourArray[i]-1]).addClass('foo'); 
} 
相關問題