我一直在阅读最佳实践,我遇到了这样一个:
不要这样做:
$("#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/