1

我一直在阅读最佳实践,我遇到了这个:

不要这样做:

$("#element .child").hide()

做这个:

$("#element").find('.child').hide()

现在我的问题是,如果我想.child多次隐藏/显示元素,我应该像这样声明它:

var spinner = $("#element").find('.child');
spinner.hide();

还是我继续打电话$("#element").find('.child').hide()

4

4 回答 4

4

我应该这样声明:

var spinner = $("#element").find('.child');
spinner.hide();

是的。您应该这样做,因为它将消除对多个 dom 查询的需要。

但是,一种常见的最佳实践是,您可以轻松地跟踪哪些变量是 jQuery 对象而哪些不是,这是为您的变量添加前缀$

var $spinner = $("#element").find('.child');
$spinner.hide();
于 2012-08-01T21:51:49.153 回答
2

是的,创建spinner变量。这样 jQuery 构造函数/函数就不会每次都执行,您可以重用曾经创建的对象。内存开销可以忽略不计。

于 2012-08-01T21:52:02.257 回答
0

这完全取决于您的问题,如果您需要在不同的功能中将相同的元素用于多种用途,最好的选择是将其保存到一个变量中,如果您只需要一次处理事件链,那就更不用说了

于 2012-08-01T21:58:17.153 回答
0

是的,您应该始终尽量减少选择,这意味着您应该将每个元素选择保存在一个您需要多次的变量中。

也尽量避免单一的 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/

于 2012-08-01T22:17:25.427 回答