Javascript 什么';这是:$(this.el).html和this.el.html之间的区别
这两者之间的区别是什么:Javascript 什么';这是:$(this.el).html和this.el.html之间的区别,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,这两者之间的区别是什么: $(this.el).html 及 阅读一些主干示例,有些示例以一种方式或另一种方式进行操作。如果$el存在于this上,并且是一个jQuery对象,您不应该使用$(this.el),因为当一个jQuery对象已经存在时,它将初始化一个新的jQuery对象。将一个元素包装在$()将jQuery扩展附加到对象原型。一旦这样做了,就不需要再做了,尽管多次这样做除了性能之外没有什么坏处。$(this.el)用jQuery(或Zepto)包装元素。因此,如果您的HTML视图是
$(this.el).html
及
阅读一些主干示例,有些示例以一种方式或另一种方式进行操作。如果
$el
存在于this
上,并且是一个jQuery对象,您不应该使用$(this.el)
,因为当一个jQuery对象已经存在时,它将初始化一个新的jQuery对象。将一个元素包装在$()将jQuery扩展附加到对象原型。一旦这样做了,就不需要再做了,尽管多次这样做除了性能之外没有什么坏处。$(this.el)
用jQuery(或Zepto)包装元素。因此,如果您的HTML视图是这样的:
…和this.el
引用了该div,那么$(this.el)
将相当于通过jQuery直接检索它:$('#myViewElement')
this.$el
是对jQuery(或Zepto)对象的缓存引用,因此是调用$(this.el)
得到的内容的副本。这样做的目的是为了避免调用$(this.el)
,这可能会带来一些开销,从而影响性能
请注意:这两者并不等同this.el
单独是对主机对象HtmleElement的引用——不涉及库。这是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)
的额外调用最终可能会返回缓存结果,这就是为什么我说“可能存在性能问题”。它也可能不是
文档
-视图。$el
在主干中-$
- jQuery基本对象-
- Zepto基本对象-
- 我通常会看到:
var markup = $(this).html();
$(this).html('<strong>whoo hoo</strong>');
这两个对象本质上是*等价的,$el
是jQuery或Zepto对象的一部分el
,您看到使用$(this.el)
的示例的原因是,它只添加在backbone.js(0.9.0)的更高版本中
*从技术上讲,
$(this.el)
将(可能)在每次调用它时创建一个新的jQuery/Zepto对象,而则是this。$el
将每次引用相同的对象。它们产生完全相同的结果;即,对视图元素的引用$el只是$(this.el)的jquery包装器。看看这个参考:$el检查一下,总有一天你会失去你的手指,一遍又一遍地输入jQuery,担心冲突。只需执行:(函数($){/*您的jQuery代码在这里带有防弹的“$”*/})(jQuery)代码>(或者对不需要jQuery的东西停止使用jQuery?)Meh。我过度使用jQuery,并将其键入,还有其他原因。我过度使用它是因为它具有很好的跨平台性能。至于打字,好吧,总有一天我会买仿生手指——就像那些小鸡们用的壳中幽灵一样。我们有成千上万的商人。我整天都在和别人打交道。小片段。当我不得不每天为几十个站点提供代码时,我很高兴每次都能拼出jQuery。最后,我认为它读起来更快。但是,每个人都有自己的想法。投票赞成指出两者确实不同。它们都引用对象,而这些对象又引用相同的底层DOM元素,并且都是jQuery对象,但都是两个不同jQuery对象的副本。这是一个微妙的区别,但无论如何,这是一个区别。我认为使用“$(this.el)”版本没有任何意义,而重用另一个版本更有效。
var markup = $(this).html();
$(this).html('<strong>whoo hoo</strong>');
jQuery(document).ready(function(){
jQuery('.rom_num').each(function(idx,el){
var span = jQuery(el);
span.html(toRoman(span.text()));
});
});