1

I'm aware there are many ways you can do a DOM query inside a view:

$(view.el).find("#element");

$(“#element”, view.el);

view.$("#element");

Which one is the best way to go, and why?

4

2 回答 2

2

Bakcbone 保留了对视图 el 的引用,因此最后一个将是 view.$el.find('#element'); 的简写版本。

view.$("#element"); /// is like I said is just the same that :
view.$el.find('#element'); 

我认为这意味着最后一个是最快的,因为它只查看 el 而不是整个 DOM,并且仍然使用 find。

看看这个链接。http://pivotallabs.com/shorthand-for-searching-a-view-s-dom-in-backbone/

于 2013-05-27T19:56:30.203 回答
2

始终使用查找上下文选择器。

"是的,在可能的情况下,您应该始终尝试根据上下文运行您的选择,但是记住当您将上下文传递给 jQuery 构造函数时,它会创建一个额外的不必要的额外函数调用,这很有用。jQuery 的内部无论如何运行 content.find(selector),所以如果你在一个可能不会从使用上下文中受益很大的页面结构中工作,你可以从技术上跳过这一步。下面你可以看到我正在谈论的一个例子。

来源:2010 年你需要的 8 个 jQuery 性能和优化技巧(技巧 #6)

是的,这篇文章很旧,但它仍然是真实的。

TL;DR 版本:上下文选择器调用该.find()函数。使用.find()直接减少调用次数。

于 2013-05-27T19:13:01.760 回答