有什么区别:$(this.el).html和这个.$ el.html

CLi*_*own 37 javascript jquery backbone.js

有什么区别:

$(this.el).html
Run Code Online (Sandbox Code Playgroud)

this.$el.html
Run Code Online (Sandbox Code Playgroud)

阅读一些主干示例,有些以单向和其他方式进行.

Chr*_*ker 54

$(this.el)使用jQuery(或Zepto)包装元素.所以,如果您的视图HTML是这样的:

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

...并this.el引用了div,然后$(this.el)相当于直接通过jQuery检索它:$('#myViewElement').

this.$el是对jQuery(或Zepto)对象的缓存引用,因此可以从调用中获得一个副本$(this.el).目的是为您节省调用的需要$(this.el),这可能会产生一些开销,从而导致性能问题.

请注意:两者不相同.this.elalone是对宿主对象HTMLElement的引用 - 不涉及任何库.这是回归document.getElementById.$(this.el)创建jQuery/Zepto对象的新实例.this.$el引用前一个对象的单个实例.只要您了解多次调用的成本,使用其中任何一种都不是"错误的" $(this.el).

在代码中:

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

$('#myViewElement') == $(this.ele);
Run Code Online (Sandbox Code Playgroud)

此外,值得一提的是,jQuery和的Zepto有部分内部缓存,所以额外的呼叫$(this.el) 可能最终反正返回缓存的结果,这就是为什么我说"可能有性能问题".它也可能没有.

文档

  • Upvote指出两者确实不同.它们都引用反过来引用相同底层DOM元素的对象,并且都是jQuery对象,但它们是两个不同jQuery对象的副本.这是一个微妙的差异,但仍然是一个区别.我真的没有看到使用'$(this.el)'版本的任何意义,而重用其他版本更有效. (2认同)

Jac*_*ack 6

两者是本质*同等学历,$el是一个缓存版本的jQuery的或的Zepto的对象el,你之所以看到使用的例子$(this.el)是因为它在以后只增加释放 Backbone.js的的(0.9.0).

*技术上克里斯贝克指出,$(this.el)每次调用它时(可能)会创建一个新的jQuery/Zepto对象,而this.$el每次都会引用相同的对象.