我一直在阅读最佳实践,我遇到了这个:
不要这样做:
$("#element .child").hide()
做这个:
$("#element").find('.child').hide()
现在我的问题是,如果我想.child
多次隐藏/显示元素,我应该像这样声明它:
var spinner = $("#element").find('.child');
spinner.hide();
还是我继续打电话$("#element").find('.child').hide()
我一直在阅读最佳实践,我遇到了这个:
不要这样做:
$("#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.each() 迭代数组/集合)。
// Select both ids within one query
jQuery('#test, #check').addClass('hide');
如果您真的在使用 DOM,这可能会带来巨大的性能提升,例如向选择框添加选项。我在 jsfiddle 上设置了一个小基准:http: //jsfiddle.net/rrgNZ/2/