2010-10-15 7 views
0

J'ai une variable dont la valeur est la même qu'un ID sur la page. Quand je fais ceci:Construire un sélecteur avec des littéraux et des variables?

var foo = 'value'; 
$('#' + foo).thing(); 

cela ne fonctionne pas. Mais cela fonctionne:

var foo = 'value'; 
var bar = '#' + foo; //'#value'; 
$(bar).thing(); 

Comment puis-je construire ce sélecteur dans une seule ligne? La création de variables supplémentaires à usage unique semble inutile.

+2

Cela devrait fonctionner. Pouvez-vous poster votre code actuel? – hookedonwinter

+0

Preuve de concept: http://jsfiddle.net/JVxRX/ – hookedonwinter

+1

@hooked est juste - quelque chose * dehors * la question est en train de changer si elle ne fonctionne pas. –

Répondre

1

Erreur de l'utilisateur - J'ai eu un '@' dans les variables (travaillant sur une chose Twitter), donc l'ID résultant était '# @ value', ce qui est illégal à cause du @. Correction de ça, et ça marche maintenant.

0

Hmmm. Je n'ai jamais eu le problème. Mais peut-être vous pouvez essayer d'ajouter un autre ensemble de parenthèses autour de votre instruction intérieure:
$(("#" + foo)).something();

Si je ne suis pas hors-piste, cela pourrait forcer javascript à "calculer" les parenthèses intérieures d'abord, avant de le passer dans la fonction de sélection jQuery. Goog luck ...

+0

Non ... en fait, je viens de le tester et ça fonctionne bien pour générer dynamiquement une chaîne de sélecteur. Assurez-vous que vous avez déclaré la variable contenant votre chaîne de sélecteur cause si vous utilisez un mauvais nom, JavaScript va juste créer une nouvelle chaîne vide et essayer de l'utiliser comme la variable prévue, ce qui échouerait évidemment. Si vous copiez votre code, je vais jeter un coup d'oeil ... – joshuafreelance

Questions connexes