多次声明var而不是使用.find
Declaring a var instead of using .find multiple times?
我一直在阅读最佳实践,我遇到了这样一个:
不要这样做:
$("#element .child").hide()
这样做:
$("#element").find('.child').hide()
现在我的问题是,如果我想多次隐藏/显示.child
元素,我应该这样声明它吗:
var spinner = $("#element").find('.child');
spinner.hide();
还是我一直在呼叫$("#element").find('.child').hide()
我应该这样申报吗:
var spinner = $("#element").find('.child');
spinner.hide();
是的。您应该完全这样做,因为这将消除对多个dom查询的需要。
不过,为了便于跟踪哪些变量是jQuery对象,哪些不是,一个常见的最佳实践是在变量前面加上$
var $spinner = $("#element").find('.child');
$spinner.hide();
是,创建spinner
变量。这样一来,jQuery构造函数/函数就不会每次都执行,您可以重用创建过的对象。内存开销可以忽略不计。
这完全取决于您的问题,如果您需要在不同的函数中为多个目的使用相同的元素,最好的选择是将其保存到一个变量中,如果您只需要使用一次事件链接
是的,您应该始终保持低选择,这意味着您应该将每个元素选择保存在一个需要多次的变量中。
也要尽量避免单个DOM操作。让我举一个例子:
jQuery('#test').addClass('hide');
jQuery('#check').addClass('hide');
这将把类"hide"添加到id为"#test"或"#check"的元素中。您还可以在元素集合上应用许多jQuery函数,如.addClass,这将减少开销(例如,使用jQuery.ech()迭代数组/集合)
// Select both ids within one query
jQuery('#test, #check').addClass('hide');
如果您真的在使用DOM,比如在选择框中添加选项,这可以极大地提高性能。我在jsfiddle上建立了一个小基准:http://jsfiddle.net/rrgNZ/2/
相关文章:
- Dojo不解析自定义小部件的模板html中的小部件声明性
- 直接在函数声明上使用function.prototype.bind
- .Find()仅显示可见元素
- 获取HTML属性中CSS声明的值
- 对API数据使用声明性绑定
- 可以Resharper在我的javascript函数声明中添加分号
- 如何为排除无穷大和NaN的数字声明Flow类型
- 此行是否包含函数声明
- jQuery(this).Pparent().Pparente().Prent().find()在iPad上不起作用
- Javascript以不同的方式声明数字
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 使用同一对象中的其他变量声明变量
- 如何在AngularJS工厂中正确声明对象属性
- 用||声明变量
- 其中的用例标签'的声明
- 如何将变量声明为全局变量
- 调用函数中声明的变量
- 一个'var'在函数内部声明
- 如何在 template.find(input:hidden[id='SOME VARIABLE']) 声明中使用动态
- 多次声明var而不是使用.find