Ok selle de cow-boys, parce que cela va être long. J'ai passé la matinée en passant par certaines de mes vieux code et je me demandais à propos de les meilleures pratiques et optimzation. Afin d'éviter une descente subjective lane, je vais juste poster quelques exemples avec quelques espérons-le, facile de répondre à des questions. Je vais essayer de garder les exemples très simples pour faciliter une réponse et une diminution de la probabilité d'erreurs. Ici, nous allons:
1) la Cession vs jQuery Appels
Je comprends que, lors de l'accès à des sélecteurs il est généralement préférable d'attribuer un sélecteur à une variable plutôt que de faire le même appel plus d'une fois - ex.
$('div#apples').hide();
$('div#apples').show();
vs
var oranges = $('div#oranges');
oranges.show();
oranges.hide();
Cette même règle s'applique lorsque le référencement du jQuery $(this)
? Ex. Un peu simple de script pour faire certaines données dans une table cliquable et personnaliser le lien.
$('tr td').each( function() {
var colNum = $(this).index();
var rowNum = $(this).parent().index();
$(this).wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
})
vs
$('tr td').each( function() {
var self = $(this);
var colNum = self.index()
var rowNum = self.parent().index()
self.wrap('<a href="example.com/hello.html?column=' + colNum + '&row=' + rowNum +'">');
});
2) this
vs $(this)
Ok, donc ce prochain est quelque chose que j'ai demandé à ce sujet depuis longtemps, mais je n'arrive pas à trouver des renseignements sur elle. Veuillez excuser mon ignorance. Quand est-il judicieux d'appeler la vanille js this
par opposition à la jQuery enveloppé $(this)
? C'est ma compréhension que -
$('button').click(function() {
alert('Button clicked: ' + $(this).attr('id'));
});
Est beaucoup moins efficace que l'accès au DOM attribut de la vanille this
objet comme suit -
$('button').click(function() {
alert('Button clicked: ' + this.id);
});
Je comprends ce qui s'y passe, Im me demandais si il ya une règle de base à suivre lors de décider de les utiliser.
3) Est plus une spécificité de toujours mieux?
Celui-ci est assez simple, est-il TOUJOURS avantageux d'être plus précis avec nos sélecteurs? Il est facile de voir qu' $('.rowStripeClass')
serait beaucoup plus lent que d' $('#tableDiv.rowStripeClass')
, mais où allons-nous tracer la ligne? Est - $('body div#tableDiv table tbody tr.rowStripeClass')
plus vite encore? Toute entrée serait appréciée!
Si vous avez rendu à ce point, merci de prendre un coup d'oeil! Si vous n'avez pas, :p