37 votes

Quelle est la différence entre : $(this.el).html et this.$el.html

Quelle est la différence entre :

$(this.el).html

y

this.$el.html

J'ai lu quelques exemples d'épines dorsales et certains le font d'une façon et d'autres d'une autre.

54voto

Chris Points 20836

$(this.el) enveloppe un élément avec jQuery (ou Zepto). Donc, si votre vue HTML était la suivante :

<div id="myViewElement"></div>

...et this.el a référencé cette division, alors $(this.el) serait l'équivalent de la récupérer directement via jQuery : $('#myViewElement') .

this.$el est une référence en mémoire cache à l'objet jQuery (ou Zepto), donc une copie de ce que vous obtiendriez en appelant $(this.el) . L'intention est de vous éviter d'avoir à appeler $(this.el) ce qui peut entraîner une certaine surcharge et donc des problèmes de performance.

Veuillez noter : les deux ne sont PAS équivalents. this.el seul est une référence à un objet hôte HTMLElement -- aucune bibliothèque n'est impliquée. C'est le retour de document.getElementById . $(this.el) crée une nouvelle instance de l'objet jQuery/Zepto. this.$el fait référence à une seule instance de l'ancien objet. Il n'est pas "mauvais" d'utiliser l'une ou l'autre de ces méthodes, tant que vous comprenez les coûts des appels multiples à $(this.el) .

En code :

this.ele = document.getElementById('myViewElement');
this.$ele = $('#myViewElement');

$('#myViewElement') == $(this.ele);

En outre, il convient de mentionner que jQuery et Zepto ont des caches internes partiels, de sorte que les appels supplémentaires à $(this.el) puede finit par retourner un résultat en cache de toute façon, et c'est pourquoi je dis "peut avoir des problèmes de performance". Il se peut aussi que ce ne soit pas le cas.

Documentation

6voto

Jack Points 6960

Les deux sont équivalents, avec $el être un version cachée des objets jQuery ou Zepto el La raison pour laquelle vous voyez des exemples utilisant $(this.el) c'est parce qu'il n'a été ajouté que plus tard libérer de backbone.js (0.9.0).

2voto

Kevin B Points 57721

Si $el existe sur this et est un objet jQuery, vous ne devriez pas utiliser $(this.el) car cela reviendrait à initialiser un nouvel objet jQuery alors qu'il en existe déjà un.

2voto

Brendan Delumpa Points 938

Ils produisent exactement la même chose, c'est-à-dire une référence à l'élément d'une vue. $el est simplement une enveloppe jquery pour $(this.el). Regardez cette référence : http://documentcloud.github.com/backbone/#View- $el

0voto

Matt S Points 4279

Envelopper un élément dans $() ajoute les extensions jQuery au prototype de l'objet. Une fois que c'est fait, il n'est pas nécessaire de le refaire, bien qu'il n'y ait aucun inconvénient, si ce n'est la performance, à le faire plusieurs fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X