Quelle est la différence entre $ el et el dans les vues Backbone.js?

Pouvez-vous indiquer la différence entre $el et el dans les vues Backbone.js?

    Disons que vous faites cela

     var myel = this.el; // here what you have is the html element, //you will be able to access(read/modify) the html //properties of this element, 

    avec ça

     var my$el = this.$el; // you will have the element but //with all of the functions that jQuery provides like, //hide,show etc, its the equivalent of $('#myel').show(); //$('#myel').hide(); so this.$el keeps a reference to your //element so you don't need to traverse the DOM to find the // element every time you use it. with the performance benefits //that this implies. 

    L'un est l'élément html et l'autre est l'objet jQuery de l'élément.

    Mu est trop court est exactement exact:

     this.$el = $(this.el); 

    Et il est facile de comprendre pourquoi, regardez la fonction _setElement la vue :

     _setElement: function(el) { this.$el = el instanceof Backbone.$ ? el : Backbone.$(el); this.el = this.$el[0]; }, 

    Cela garantit que el est toujours un élément DOM, et que $el est toujours un objet jQuery de celui-ci. Donc, ce qui suit est valide même si j'ai utilisé un objet jQuery comme option ou propriété:

     var myView = new Backbone.View({ el: $('.selector') }); // or var MyView = Backbone.View.extend({ el: $('.selector') }); 

    Qu'est-ce qu'un objet jQuery mis en cache?

    C'est un objet jQuery conservé à l'intérieur d'une variable à des fins de réutilisation. Cela évite l'opération coûteuse de trouver l'élément avec quelque chose comme $(selector) chaque fois.

    Voici un exemple:

     render: function() { this.$el.html(this.template(/* ...snip... */)); // this is caching a jQuery object this.$myCachedObject = this.$('.selector'); }, onExampleEvent: function(e) { // avoids $('.selector') here and on any sub-sequent example events. this.$myCachedObject.toggleClass('example'); } 

    Voir une réponse complète que j'ai écrite pour en savoir plus.

    Il est si tard pour répondre, mais -> this.$el est une référence à l'élément dans le contexte de jQuery, généralement pour une utilisation avec des choses comme .html() ou .addClass() , etc. Par exemple, si vous Avait un div avec id someDiv, et vous le définissez sur la propriété el de la vue Backbone, les instructions suivantes sont identiques:

     this.$el.html() $("#someDiv").html() $(this.el).html() 

    this.el est l'élément DOM natif, intact par jQuery.