2

在我的工作区中有人建议,如果我们将元素保存到变量中,也许我们可以提高 JQuery 的性能,这样 JQ 就不必每次调用 DOM 时都搜索它。

例如......假设我$('#myPopUp')在整个javascript中使用了很多函数,建议是在document.ready函数中我将它保存到一个变量......

mypopup = $('#myPopUp')然后在整个脚本中使用这个$(mypopup).hide(), .show(), 。blah()

这会提高我们的性能还是不值得向全局命名空间添加更多变量?

4

2 回答 2

3

将 jQuery 元素保存到变量中肯定比重复传递选择器更高效。多快是有问题的,这取决于您的选择器和 DOM 的复杂性。它可能只是速度快得可以忽略不计,但保存到变量仍然是最佳实践。除了更快的执行之外,代码压缩工具还可以将变量重命名为类似 的短a名称,这样可以节省字节并使 JS 文件的物理加载时间更快。

但是,您的示例滥用了这种技术。

mypopup = $('#myPopUp');
$(mypopup).hide();

您将 jQuery 对象保存到变量中mypopup,但您将其传递回第二行的 jQuery 构造函数。由于它已经是一个 jQuery 对象,你可以直接调用它的方法:

mypopup.hide();

按照惯例,您应该通过在变量名称前加上美元符号来表明您的变量是一个 jQuery 对象,如下所示:$mypopup.

于 2013-04-03T19:09:57.677 回答
3

如果您正确使用它(到目前为止您还没有),它将提高性能。

缓存jQuery 集合的重点是

  • 不要每次都查询 DOM
  • 不要一直调用 jQuery 构造函数

您不需要将缓存的变量包装在 中$(),只需像访问它一样

mypopup.hide();

注意一点:您使用的是术语global variable,您仍然不应该这样做。它足以创建您自己的应用程序上下文/ -namepsace并将这些变量“全局”保留在其中。您不想破坏实际的全局上下文。

于 2013-04-03T19:10:16.453 回答