Javascript 由于缓存原因对不存在的元素调用Jquery的开销

Javascript 由于缓存原因对不存在的元素调用Jquery的开销,javascript,jquery,html,Javascript,Jquery,Html,如果JQuery调用不存在的元素,那么开销是多少?它不会抛出错误,但是除了加载脚本之外,还有很多cpu开销吗?这样做是为了类还是id重要吗 出于缓存的原因和保持同步连接最少的原因,我将每个页面的所有onload脚本都保存在一个文件中,但我想知道是否可以有效地告诉我的javascript它在哪个页面上,并通过if语句或switch语句只加载实际在该页面上运行的代码位。我不想把它们放在单独的文件中,因为我希望在初次访问之后,每个页面都能从缓存中加载尽可能多的内容 例如,您在主页上,但该文件或onlo

如果JQuery调用不存在的元素,那么开销是多少?它不会抛出错误,但是除了加载脚本之外,还有很多cpu开销吗?这样做是为了类还是id重要吗

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

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

$('#product_options').hover(function(){},function(){});
但是产品选项在此页面上不存在,因为它是主页

这对诸如

$('.addtocart').click(function(){})
需要注意的是,这不会在JQuery中引发任何错误。

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

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

然而,您可以将代码放入函数中,然后从每个页面只调用相关的函数,从而避开所有这些问题。每一页都写不多

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

$(函数(){
doSomething();
doSomethingElse();
});
我认为这是一个很好的平衡,既不将代码分散在多个文件中,同时也不尝试运行死代码。

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

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

然而,您可以将代码放入函数中,然后从每个页面只调用相关的函数,从而避开所有这些问题。每一页都写不多

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

$(函数(){
doSomething();
doSomethingElse();
});

这是一个很好的平衡,既不将代码分散在多个文件中,同时也不尝试运行死掉的代码。

这会影响性能,因为即使要确定没有匹配项,也必须进行工作。现在,一般来说,这是一个非常小的问题,你可能不必担心,除非你有一个巨大的非常令人兴奋的Javascript web应用程序——想想Facebook。也就是说,只运行应该在页面上运行的代码仍然是一种好的做法,我发现最好的方法是Paul Irish的方法。

性能会受到影响,这仅仅是因为即使要确定没有匹配项,也要做一些工作。现在,一般来说,这是一个非常小的问题,你可能不必担心,除非你有一个巨大的非常令人兴奋的Javascript web应用程序——想想Facebook。也就是说,只运行应该在页面上运行的代码仍然是一种好的实践,我发现最好的方法是Paul Irish的方法