view.$el and $(view.el) 

你能告诉我view.$el$(view.el)之间有什么区别view.$el我关注一些网站但我找不到精心解答的答案。如果解决这个问题会有很大的帮助,因为我是bacbone的新手。

===============>>#1 票数:1

跟踪Backbone.View的源代码可能会帮助您找出$(view.el)和view。$ el之间的区别。 在创建Backbone View的新实例时,将调用setElement函数。

setElement: function(element, delegate) {
  if (this.$el) this.undelegateEvents();
  this.$el = element instanceof Backbone.$ ? element : Backbone.$(element);
  this.el = this.$el[0];
  if (delegate !== false) this.delegateEvents();
  return this;
},

Backbone会将DOM或选择器字符串转换为jQuery对象(如果需要)并将其分配给此。$ el here。

this.$el = element instanceof Backbone.$ ? element : Backbone.$(element);

然后将DOM元素分配给this.el

this.el = this.$el[0];

jQuery程序员通常定义一个以美元符号开头的jquery对象变量。 它带来了一些好处:

  1. 易于识别(我们不能在DOM元素上调用find())

  2. 性能提升:当我们想要缓存jquery选择结果时,我们总是创建一个jQuery对象变量(避免在DOM树中重新选择或重新包装DOM)。 重新选择或重新包装DOM可能会导致性能问题。 特别是你有一个庞大而复杂的DOM结构。


//re-selecting
$("#test").click(function(){
  //event hanlder
});
$("#test").addClass("viewed");

//re-wrapping
var dom = getElementById("test");
$(dom).find(".anchor").removeClass("viewed");
$(dom).click(function(){
   //event hanlder
});

那么...视图。$ el和$(view.el)之间有什么区别? $(view.el)再次重新包装视图的DOM元素,我想你可以直接使用view。$ el。

===============>>#2 票数:1

Chickenrice已经回答了你的问题,但我想补充50美分。

我建议避免使用$(whatever)并使用view.$(whatever) 这种方法有助于避免视图之间的冲突。

  • $(whatever) - 搜索document元素,以便您可以错误地修改视图外部的元素
  • view.$(whatever) - 在当前视图中搜索

===============>>#3 票数:0

它们在功能上是相同的。 第一个更好,因为您不需要每次都将它包装在jQuery对象中。

http://backbonejs.org/#View-$el

  ask by user3522306 translate from so

未解决问题?本站智能推荐: