我在一个非常相似的主题上发布了另外一个
question,但结果却有点主观.我可以将这个问题分成两个问题,我将在下面解释一个问题:
在以下代码中:
<script type="text/javascript"> $(function() { $("#accordion").accordion(); $("#datepicker").datepicker(); $("#button").click(function() { runEffect(); return false; }); }); </script>
问题:如果我在1000页中调用此代码,但只有250页具有日期选择器ID.浏览器是否会在尝试解析id datepicker的其他750个页面上花费额外的时间,或者Jquery有一种解决这种情况的智能方法而不影响性能?
解决方法
对于那些说“不要担心”的人,我不能不同意.
$(function() { // do lots and lots of stuff });
HTML(PHP)页面内部没有Javascript.这是一场性能灾难,选择选择相对有效,意味着永远:
$(".someClass").doStuff();
代替:
$("div.someClass").doStuff();
等等.执行所有Javascript花了大约一秒钟,尽管其中95%没有做任何事情.我的建议?如果您想要一个响应迅速的网站,请不要这样做.
而是将这样的函数放在外部JS中:
function activate_accordion() { $("#accordion").accordion(); }
这当然是一个简单的例子.但重点在于:除非绝大多数页面都使用Javascript,否则不应在外部Javascript文件中自动执行Javascript.您的外部Javascript文件应该只是在各个页面上必要时调用的功能集合.
然后在HTML放入的每个页面上:
<script type="text/javascript"> $(function() { activate_accordion(); } </script>
所以你只执行你实际使用的Javascript.是的,这稍微多一些工作,因为你必须知道每个页面正在做什么/使用什么,但是全局做这件事很快就会失控.
我通过这种方式将Javascript执行时间减少到50-100ms(从1-2秒).