2010-01-10 5 views
3

Est-il possible d'utiliser une chaîne d'une classe CSS d'éléments comme nom de tableau?
Je suis à la recherche d'une façon plus intelligente de stocker les animations par défaut qui peuvent augmenter au fil du temps pour inclure plus d'options dans le tableau.Utiliser la classe d'éléments actuelle comme nom de tableau?

Exemple


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> 

Merci à Adva nce!

Répondre

2

Vous pouvez accéder à un global (niveau supérieur) variables par nom en utilisant:

window[arr] 

Vous cherchez window[arr][0]. Voir en action ici: http://jsbin.com/ofemo

Cependant, cela crée un lien étroit entre votre JavaScript et le design. Je préfère généralement utiliser .addClass, et définir les couleurs en utilisant CSS.

+0

Merci Kobi, cette démo a vraiment aidé; c'était ** un cas de portée variable: - |. Vous avez raison d'utiliser des cours; J'utiliserai les transitions de couleurs jQuery entre les sections/pages. Maintenant j'y pense en créant un 'tableau' à partir des couleurs de ma section stylesheets () aurait beaucoup plus de sens. Grr; SO est un cadeau et une malédiction. Merci encore! – LeslieOA

2

Vous devez utiliser le plug-in métadonnées de jQuery. Il vous permet de stocker toutes les données relatives aux éléments en classe ou tout attribut data- *.

+0

+1 pour avant moi d'écrire, donc je ne pas modifier dans ma réponse. – Kobi

+0

Cela aidera probablement maintenant que je suis venu à la pensée de votre/Kobi. Merci Eimantas! – LeslieOA

2

Sinon, avoir un tableau comme celui-ci:

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

puis

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

Probablement ne va pas rester avec des tableaux, mais merci pour le pourboire, ne savait pas qu'ils pourraient être déclarés comme ça. Paix Eric. – LeslieOA

+0

Pour clarifier: c'est techniquement un objet, pas un tableau. Notez comment chaque valeur a une clé correspondante. Javascript vous permet d'accéder aux propriétés via la notation '[]' qui lui donne l'apparence d'un tableau. – Joel

+0

N'est-ce pas à la fois un tableau associatif et un objet? En Javascript, ils sont une seule et même chose. – Eric

Questions connexes