2

如果 JQuery 调用不存在的元素,这样做的开销是多少?它不会引发任何错误,但除了加载脚本之外,还有很多 cpu 开销吗?这是为班级还是为身份完成的重要吗?

出于缓存原因和将同时连接保持在最低限度的原因,我将每个页面的所有 onload 脚本都保存在一个文件中,但我想知道告诉我的 javascript 它在哪个页面上并只加载位是否有效通过 if 语句或 switch 语句在该页面上实际运行的代码。我不想将它们放在单独的文件中,因为我希望每个页面在初次访问后尽可能多地从缓存中加载。

例如,您在主页上,但该文件或 onload 中包含产品页面 javascript。

$('#product_options').hover(function(){},function(){});

但是 product_options 在此页面上不存在,因为它是主页。

它对诸如此类的课程有影响吗

$('.addtocart').click(function(){})

应该注意的是,这不会在 JQuery 中引发任何错误。

4

2 回答 2

2

jQuery 有一个特殊的“快速”路径来处理单个 id 选择器,例如#product_options; 所有其他选择器都以更复杂的方式处理。如果您继续使用 id 选择器,则性能影响将无法衡量。

如果您使用其他选择器,那么对性能的影响会相对更大,但从绝对意义上讲,它不太可能产生太大影响,除非我们谈论的是几十个选择器。

但是,您可以通过将代码放入函数中,然后从每个页面仅调用相关的代码来回避所有这些。每一页都不会写太多

<script type="text/javascript">
$(function() {
    doSomething();
    doSomethingElse();
});
</script>

恕我直言,这是一个很好的平衡,既不将代码分散到多个文件中,又不尝试运行死代码。

于 2012-08-02T21:53:43.880 回答
0

性能会受到影响,仅仅是因为必须完成工作才能确定没有匹配项。现在,一般来说,这非常小,除非你有一个巨大的、非常令人兴奋的 Javascript 网络应用程序——想想 Facebook,否则你可能不必担心这一点。也就是说,只运行应该在页面上运行的代码仍然是一种很好的做法,我发现最好的方法是 Paul Irish 的方法,基于标记的不显眼的全面 DOM 就绪执行

于 2012-08-02T21:56:21.913 回答