多次声明var而不是使用.find

Declaring a var instead of using .find multiple times?

本文关键字:find 声明 var      更新时间:2023-09-26

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

不要这样做:

$("#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/