什么之间的区别:$(this.el).html和这个$ el.html(What's the

2019-06-26 08:18发布

有什么区别:

$(this.el).html

this.$el.html

读了几个骨干的例子和一些做这件事和其他的另一种方式。

Answer 1:

$(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
  • jQuery的基础对象- http://api.jquery.com/jQuery/
  • 仄基础对象- http://zeptojs.com/#$()


Answer 2:

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

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



Answer 3:

如果$el存在于this是一个jQuery对象,你不应该使用$(this.el)因为它会被初始化一个新的jQuery对象时已经存在。



Answer 4:

它们产生完全一样的东西; 即,视图的元素的引用。 $ EL简直是$(this.el)一个jQuery包装。 看看这个参考: http://documentcloud.github.com/backbone/#View- $埃尔



Answer 5:

我通常看到这一点:

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()));
    });
}); 


Answer 6:

在$包装的元件()追加了jQuery扩展到对象原型。 一旦这样做了它并不需要重新做,虽然有比在多次做它的性能等没有坏处。



文章来源: What's the difference between: $(this.el).html and this.$el.html