2010-01-10 86 views
3

是否可以使用元素CSS類中的字符串作爲數組名稱?
我正在尋找一種更明智的方式來存儲默認動畫,這些動畫可能會隨着時間增長而在數組中包含更多選項。使用當前元素類作爲數組名稱?


的JavaScript(jQuery的): -

var a1 = ['red', 'pink']; 
var a2 = ['green', 'lime']; 
var a3 = ['blue', 'cyan']; 

$('ul li').click(function() { 
    arr = $(this).attr('class'); // Does this need to be converted? 
    $('div#sprite').css('background', arr[0]); // Is this kosher? 
    $('div#sprite p').css('color', arr[1]); 
    }); 

HTML: -

<div id='sprite'><p>Lorem ipsum...</p></div> 

<ul> 
    <li class='a1'>Array 1</li> 
    <li class='a1'>Array 2</li> 
    <li class='a1'>Array 3</li> 
    </ul> 

感謝ADVA NCE!

回答

2

您可以使用名字來訪問全局(頂層)變量:

window[arr] 

所以你要找window[arr][0]。在這裏看到它的動作:http://jsbin.com/ofemo

但是,這會在JavaScript和設計之間建立緊密的聯繫。我通常更喜歡使用.addClass,並使用CSS定義顏色。

+0

謝謝Kobi,那個demo真的很有幫助;它**是一個可變範圍的情況: - |。你是正確的使用類;我將在部分/頁面之間使用jQuery顏色轉換。 現在我正在考慮從我的樣式表部分顏色()創建一個'數組'會更有意義。 Grr; SO是禮物和詛咒。 再次感謝! – LeslieOA 2010-01-10 10:00:40

2

你應該使用jQuery的元數據插件。它允許您在類或任何data-*屬性中存儲任何與元素相關的數據。

+0

+1我之前寫的,所以我沒有把它編輯成我的答案。 – Kobi 2010-01-10 08:48:43

+0

這可能有助於我現在回到你的/ Kobi的想法。謝謝Eimantas! – LeslieOA 2010-01-10 10:01:51

2

另外,有一個這樣的數組:

var colors = { 
    'a1':{ 
     'background-color':'red', 
     'color':'pink' 
    }, 
    'a2':{ 
     'background-color':'green', 
     'color':'lime' 
    }, 
    'a3':{ 
     'background-color':'blue', 
     'color':'cyan' 
    } 
} 

然後

$('div#sprite').css(colors[$(this).attr('class')]); 
+0

可能不會堅持使用數組,但感謝提示,不知道他們可以這樣宣佈。和平埃裏克。 – LeslieOA 2010-01-10 10:02:45

+0

澄清:這在技術上是一個對象,而不是一個數組。注意每個值如何具有相應的鍵。 Javascript允許你通過'[]'表示法訪問屬性,這使得它看起來像一個數組。 – Joel 2010-02-20 21:32:07

+0

不是既是一個關聯數組又是一個對象?在Javascript中,它們是一樣的。 – Eric 2010-02-21 13:21:52

相關問題