2017-04-07 2 views
-1

J'ai un code de travail très sale pour ma fonction. Mais cela semble si mauvais, je voudrais le nettoyer. Voici l'extrait:sélecteur jQuery avec "#" et "."

var id = 'foo1';   //$(this).closest('.myclass').attr('id'); 
var class = 'morefoo';  //$(this).attr("class").split(" ").pop() 

$('#' + id + ' .' + class).show(); 

Quelqu'un a une idée comment écrire ceci plus intelligent? Webstorm n'aime pas ce '#' + myvar + '.' pas vraiment.

+1

Oui, je sais ce qu'elle ressent. Qu'essayez-vous exactement? Je ne vois aucun type de nettoyage ici - Venez y penser, qu'est-ce que c'est exactement "nettoyage"? –

+1

'class' est un [mot réservé] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Reserved_keywords_as_of_ECMAScript_2015) en JavaScript: appelle la variable' class' presque tout le reste, et il devrait (* probablement *) être bien; Notez cependant que je n'ai jamais utilisé Webstorm, donc je ne suis pas entièrement sûr. Y a-t-il un message d'erreur spécifique qui vous amène à croire que cette structure est un problème? –

+0

je viens d'utiliser var class pour montrer ici. J'utilise un autre nom de var. Je veux dire par nettoyer ce mélange entre '#' + var + '.' + var .. cela a l'air terrible sale. –

Répondre

3

Vous ne pouvez pas faire grand-chose ici. Il suffit de concaténer et de construire votre sélecteur d'abord et l'assigner à une variable comme,

var elmId = 'foo1'; 
var elmClass = 'morefoo'; 

var elmSel = '#' + elmId + ' .' + elmClass; 

$(elmSel).show(); //this way, you can use elmSel instead of concatenating every time 

Remarque: Vous ne pouvez pas utiliser class comme nom de variable comme il est un mot-clé réservé. De plus, évitez d'utiliser id comme nom de variable car c'est trop générique.