2010-06-18 4 views
1

question très simple: je veux optimiser le code jQuery suivant avec une lisibilité maximale, des performances optimales et un minimum de tracas (agitation = déclarant nouvelles variables, etc.):Avec (ou similaire) déclaration JQuery

$(".addthis_toolbox").append('<a class="addthis_button_delicious"></a>'); 
$(".addthis_toolbox").append('<a class="addthis_button_facebook"></a>'); 
$(".addthis_toolbox").append('<a class="addthis_button_google"></a>'); 
$(".addthis_toolbox").append('<a class="addthis_button_reddit"></a>'); 
. 
. 
. 
$(".addthis_toolbox").append('<a class="addthis_button_yetanotherservice"></a>'); 

Répondre

0

javascript ne ont la déclaration with:

with($(".addthis_toolbox")) 
{ 
    append('<a class="addthis_button_delicious"></a>'); 
    ... 
} 

Vous pourriez rencontrer des problèmes de confusion en ce qui concerne la portée des variables using avec la déclaration cependant.

Vous pouvez utiliser enchaînant pour obtenir la même chose:

$(".addthis_toolbox").append('<a class="addthis_button_delicious"></a>') 
        .append(...) 
        .append(...); 
+0

Est-ce que quelqu'un downvote cette réponse? –

+0

@Salman A - Oui. Je ne sais pas pourquoi. –

+1

Je n'ai pas fait de downvote, mais la communauté Javascript est pratiquement unanime à condamner la déclaration 'with' comme une très mauvaise idée. Ce n'est pas une «optimisation» car cela entraîne généralement de mauvaises performances. Cela peut également causer des fuites de mémoire. Vraiment, ce n'est pas une bonne idée. – Pointy

6

Vous pouvez juste garder enchaînant sur le même objet jQuery, comme ceci:

$(".addthis_toolbox").append('<a class="addthis_button_delicious"></a>') 
        .append('<a class="addthis_button_facebook"></a>') 
        .append('<a class="addthis_button_google"></a>') 
        .append('<a class="addthis_button_reddit"></a>'); 
+0

Encore mieux: il suffit d'ajouter une seule chaîne contenant tous ces éléments. –

+1

@Andy - D'accord * pour cet exemple *, mais pourrait être quelque chose d'autre en jeu ici. Une seule chaîne pour les ancres serait un fragment de document mis en cache donnant une amélioration décente des performances ici s'il y avait beaucoup d'éléments '.addthis_toolbox', mais n'était pas sûr de ce que la partie" ... "de la question était :) –

+0

@Andy: oui, c'est la meilleure manière possible en termes de performance, mais ça va diminuer la lisibilité. –

Questions connexes