有什么区别:
$(this.el).html
和
this.$el.html
读了几个骨干的例子和一些做这件事和其他的另一种方式。
有什么区别:
$(this.el).html
和
this.$el.html
读了几个骨干的例子和一些做这件事和其他的另一种方式。
$(this.el)
包装与jQuery(或的Zepto)的元件。 所以,如果您认为HTML是这样的:
<div id="myViewElement"></div>
...和this.el
引用该分区,然后$(this.el)
将通过jQuery直接检索它等价的: $('#myViewElement')
this.$el
是一个高速缓存参照的jQuery(或的Zepto)对象,所以,你会从调用得到什么副本$(this.el)
这样做的目的是为了节省您需要调用$(this.el)
其中可能有一些开销,为此性能问题。
请注意:这两者是不等价的。 this.el
孤单是一个宿主对象HTML元素的引用-不涉及库。 这是返回document.getElementById
。 $(this.el)
创建了jQuery /的Zepto对象的新实例。 this.$el
引用原对象的单个实例。 这不是“错误”,使用其中任何一个,只要你了解多个呼叫到费用$(this.el)
在代码:
this.ele = document.getElementById('myViewElement');
this.$ele = $('#myViewElement');
$('#myViewElement') == $(this.ele);
此外,值得一提的是,jQuery和的Zepto有部分内部缓存,因此格外调用$(this.el)
可能最终反正返回缓存的结果,这就是为什么我说“可能有性能问题”。 它也可能不会。
文档
view.$el
- http://backbonejs.org/#View-$el $
骨干- http://backbonejs.org/#View-dollar 两者有本质 *同等学历, $el
是一个缓存版本了jQuery或对象的Zepto el
,为什么你看到使用实例的原因$(this.el)
是因为它在以后只增加释放 Backbone.js的的( 0.9.0)。
* 技术上的克里斯·贝克指出$(this.el)
将(可能)创建一个新的jQuery /的Zepto对象每次调用它,而时间this.$el
将引用每次相同。
如果$el
存在于this
是一个jQuery对象,你不应该使用$(this.el)
因为它会被初始化一个新的jQuery对象时已经存在。
它们产生完全一样的东西; 即,视图的元素的引用。 $ EL简直是$(this.el)一个jQuery包装。 看看这个参考: http://documentcloud.github.com/backbone/#View- $埃尔
我通常看到这一点:
var markup = $(this).html();
$(this).html('<strong>whoo hoo</strong>');
我同意Raminon。 你的例子你见过看错了。
该代码典型地看到一个jquery环路内,如每个(),或事件处理程序。 在循环内,所述“EL”变量将指向纯元素,不是jQuery对象。 这同样适用于“这个”事件中处理如此。
当你看到以下内容:$(EL)或$(本),笔者得到一个jQuery参考DOM对象。
下面是我只是习惯了数字转换为罗马numerials一个例子:(注意,我一直使用jQuery而不是$ - 太多的冲突与mootools的...)
jQuery(document).ready(function(){
jQuery('.rom_num').each(function(idx,el){
var span = jQuery(el);
span.html(toRoman(span.text()));
});
});
在$包装的元件()追加了jQuery扩展到对象原型。 一旦这样做了它并不需要重新做,虽然有比在多次做它的性能等没有坏处。