2013-07-22 26 views
1

我試圖讓我的頭在jQuery中的數組。我們來看下面的場景。我有一組數據,比如:在if語句中使用數組數據的jQuery

var myVariable = [ 
    'key1' : 'value1', 
    'key2' : 'value2', 
    'key3' : 'value3', 
    'key4' : 'value4' 
] 

這裏是元素的列表:

<ul id="elem"> 
    <li class="key1">Item 1</li> 
    <li class="key2">Item 2</li> 
    <li class="key3">Item 3</li> 
    <li class="key4">Item 4</li> 
</ul> 

我將如何去創造一個if statement通過各個元素的運行,如果類在數組中標識,然後替換文本內容?所以最終的輸出應該是:

<ul id="elem"> 
    <li class="key1">key1</li> 
    <li class="key2">key2</li> 
    <li class="key3">key3</li> 
    <li class="key4">key4</li> 
</ul> 

我已經用下面的嘗試,但它似乎沒有工作。

$('#elm li').each(function (index) { 
    $(this).text(myVariable[index]); 
}); 

我知道有沒有JS關聯數組,但我真的不理解它是如何工作的。

請直接指點我吧。謝謝!!

+3

你變量是一個語法錯誤,內容看起來像對象屬性,但你已經使用'[]'創建數組。 – Pointy

回答

3

一種方式:

$("#elem li").text(function(i, text) { 
    return this.className in myVariable 
     ? myVariable[this.className] : text; 
}); 

的另一種方法:

$.each(myVariable, function(key, value) { 
    $("#elem li." + key).text(value); 
}); 

NB:在與非數字鍵JavaScript數組是對象並應與{}包圍,但不與[] ,就像普通的數組一樣。

+0

謝謝!我用第二個選項,因爲我發現它更容易閱讀。我應該知道的兩種方法? – Sheixt

+0

@Sheixt是的,第一個更快:) – VisioN

2

嘗試......

var myVariable = { 
    'key1' : 'value1', 
    'key2' : 'value2', 
    'key3' : 'value3', 
    'key4' : 'value4' 
}; 
$("#elem li").text(function() { 
    return myVariable[this.className] == '' ? this.text(): myVariable[this.className]; 
}); 

工作撥弄here PS:我知道這是類似於第一個答案,但我已經看到了張貼在此之後一個:(

+0

'.text()'中的回調函數在其參數中已經有當前值。 – VisioN

0
$('#elm li').each(function() { 
    var text = myVariable[ $(this).className ] ? myVariable[ $(this).className ] : ''; 
    $(this).text(text); 
});