由于受到模板系统的限制,我写在页面上的js是分散的,而它们都是绑定在jquery的ready
事件中的,比如这样
<!-- header.php --> <script> $(document).ready(function () { ... }); </script> <!-- body.php --> <script> $(document).ready(function () { ... }); </script> <!-- foot.php --> <script> $(document).ready(function () { ... }); </script>
因为事件执行顺序是跟它的绑定顺序一致的,也就是说foot.php
里的ready
肯定是最后触发的,但是由于我会在这里面做一些变量初始化的工作,想让foot.php
里面ready
的handler
第一个被触发,请问在不挪移代码顺序的情况下有何办法呢?
怪我咯2017-04-10 12:45:01
<!-- header.php --> <script> var ready_funcs=[function () { ... }); </script> <!-- body.php --> <script> ready_funcs.push(function () { ... }); </script> <!-- foot.php --> <script> $(document).ready(function () { ... $.each(ready_funcs,function(idx, fn){ fn(); }); }); </script>
黄舟2017-04-10 12:45:01
如果初始化的工作不依赖于页面其它资源的加载,可以把footer的初始化工作放到ready函数外面,
使用一个匿名函数使其立即执行。
这样的好处就是弱化了header.php和footer.php的脚本依赖关系。