2012-07-29 4 views
0

J'utilise jquery pour mon site, j'ai une liste de variables qui doivent être appelées quand on appuie sur un bouton. Fondamentalement, j'ai besoin de déterminer la variable du nom de la classe! :(Recherche et exécution de variables à partir d'une classe?

Par exemple: http://jsfiddle.net/shannonhochkins/f6dLQ/

Il retourne le nom de la classe de « site », qui est aussi la variable « site web » mais je dois alors déterminer en quelque sorte la rendre égale la variable pas la chaîne « site web « ?

S'il vous plaît aider!

+0

quelque chose comme ça http://jsfiddle.net/f6dLQ/1/ – Musa

+0

Vous monsieur, sont incroyables! – Shannon

Répondre

1

Si vous déclarez la variable dans la portée globale c.-à-pas dans une fonction, ce sera une propriété de l'objet de la fenêtre, et peut être facilement récupéré

$(document).ready(function(){ 
    $('body a').click(function() { 
     var name = $(this).attr('class'); 
     alert(window[name]); 
    }); 
});  

var website = "http://journal.shannonhochkins.com/"; 

http://jsfiddle.net/f6dLQ/3/

1

Bien que la solution de Musa fonctionne, cela semble être une mauvaise conception. Je vous suggère de faire un nom de classe de mappage de table aux données:

var class_table = { 
    website: "http://journal.shannonhochkins.com/", 
    ... 
} 

puis utilisez alert(class_table[name])

+0

Pourquoi cela fonctionne-t-il réellement? ce qui rend ce travail si vous ne me dérange pas de demander? pourquoi ne pas l'appeler "var" et pourquoi doit-il avoir "window [nom]? – Shannon

+0

Je pense que votre question concernait la réponse de Musa, pas la mienne, l'explication est que toutes les variables globales sont automatiquement des propriétés de la fenêtre, et les objets en Javascript peuvent être utilisés comme tableaux associatifs (par exemple, object ["foo"] est équivalent à object.foo). – Barmar

Questions connexes