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.el
alone是对宿主对象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)
可能最终反正返回缓存的结果,这就是为什么我说"可能有性能问题".它也可能没有.
文档
view.$el
- http://backbonejs.org/#View-$el$
在骨干 - http://backbonejs.org/#View-dollar