Je souhaite appliquer un événement click() à tous les liens d'une page lorsque le lien href de ce lien pointe vers un fichier avec une extension spécifique. La liste des extensions applicables tourne autour de 30 et pourrait augmenter un peu dans le futur (mais ne dépassera jamais 100).À quel point les performances de jQuery se dégradent-elles en cas d'utilisation d'un grand nombre de sélecteurs?
Ma première tendance est de structurer l'événement de liaison comme ceci:
$("a[href$=avi],
a[href$=ppt],
a[href$=rtf],
// ...snip a bunch more of these....
a[href$=pdf],
a[href$=xml]").click(function() {
// Do something
});
Est-ce fou?
Cela ajoute un gestionnaire de clic à tous les liens, bien que. C'est juste que ça ne fait rien à moins que les href ne correspondent. Une solution qui applique uniquement le gestionnaire aux liens correspondants serait préférable. Voir mon exemple de filtre. – tvanfosson
@tvanfosson: Vous avez raison de dire que cette méthode fait une liaison inutile, mais dans votre méthode, jQuery doit encore faire un peu plus d'analyse et de déplacement, ce qui est toujours plus lent qu'un switch-case. Donc, la performance sage, cette méthode est meilleure. –