donné: Je me demande qui est plus rapide: p> ou: p> ou est-ce important? p> p>
7 Réponses :
La vitesse serait probablement la même, mais en utilisant $ (ceci) est bien meilleure, car vous n'avez pas à vous soucier de l'élément d'être réaffecté à autre chose (ou la valeur de l'élément étant entièrement perdue). P>
Également, si vous refacteur et utilisez un sélecteur pour une classe au lieu d'un élément spécifique, la fonction fonctionnera pour tous les éléments appariés, pas seulement celui. P>
Je préférerais la seconde. Si vous avez déjà voulu refroidir la fonction et le réutiliser pour un autre bouton, il serait plus portable. P>
$ (Ceci) provoque un appel de fonction, votre premier exemple est théoriquement plus rapide, mais probablement pas par beaucoup. P>
Le premier est plus rapide. La seconde exécute deux fois le même sélecteur. Cela dit, vous n'utiliserez que ce code une fois en utilisant la première méthode, ce n'est probablement pas ce que vous voulez la plupart du temps.
Dans la pratique, utilisez un motif comme: p>
$('stuff').click(function(){
var $$ = $(this);
$$.dosomething();
$$.dosomethingelse();
)}
Bien jQuery a son cache unique des éléments DOM (qui ont déjà été touchés une fois par JQuery), donc dans la plupart des cas, cela ne fera pas une réelle différence. P>
Je ne crois pas vraiment que ceci est votre cas, JQuery enveloppera réellement la ceci qui est l'élément, de sorte que vous n'exécutez pas vraiment une requête de quelque sorte deux fois. P>
BTW strong>, dans certains cas, cela fait une différence (lors de la délégation par exemple). P>
Utiliser si si le sélecteur était censé correspondre à plus d'un élément, alors La différence est expliquée sur ses exemples suivants: p> 1- manutention sur un seul élément p> 2- gestionnaire sur plusieurs éléments p> 3 - gestionnaire sur un seul élément, mais appelé à plusieurs éléments enfants p> Je trouve cela assurer (et moins de travail, une très minuscule différence cependant) à l'enveloppe existante, montrant que Je m'attends à un seul élément dans ce cas et je travaille juste avec ça. Et utiliser élément code>. élément code> était une collection JQUERY correspondant à un seul élément, par exemple, $ ( code> anormal ) code>, alors utilisez-le simplement. p> élément code> est en fait éléments code>, Une collection d'éléments, donc, dans ce cas, vous utilisez $ (this) code> à l'intérieur de votre gestionnaire de clic pour attraper celui qui clique en réalité cliqué. P> $ (this) code> lorsque je traite d'éléments d'une collection d'éléments assortis. P> p>
Ce serait plus rapide:
//<a href="#" id="element">click me</a>
var element = $('#element');
element.dosomething = function () {
alert('did something');
return false;
}
element.bind('click', element.dosomething);
Cela ne fonctionnerait pas: élément.bind ('click', élément.dosomething); code> ... parce que vous passez une fonction qui va maintenant être appelée à partir du contexte d'un élément DOM au lieu de un objet jquery. Votre exemple peut fonctionner car vous avez défini une fonction arbitraire sur cet objet jQuery spécifique, mais ce n'est pas probablement le cas réel ici.