在 Backbone 视图中查找内部元素时,您是通过将范围限制为 来获得最佳性能this.$el
,还是该find()
方法仍然必须搜索整个 DOM?
这是我正在谈论的一个存根示例:
<!-- a bunch of other stuff -->
<div id="outer">
<!-- a bunch of other stuff -->
<div id="inner">foo</div>
</div>
<!-- a bunch of other stuff -->
<script>
var myView = new MyView({el: $('#outer')});
</script>
MyView 在哪里:
MyView = Backbone.View.extend({
//other code
useScoping: function() {
var $innerElement = this.$el.find('#inner');
$innerElement.text('bar');
},
noScoping: function() {
var $innerElement = $('#inner');
$innerElement.text('bar');
}
});
会useScoping()
比 更有效率noScoping()
吗?我认为这是因为this.$el
必须在构造对象时进行缓存,以便在使用范围时搜索'#inner'
不必覆盖整个 DOM。但我想确定一下。如果我们class="inner"
对 JavaScript 进行适当的更改,同样的情况会适用吗?