search

Home  >  Q&A  >  body text

javascript - jQuery中绑定事件时能否指定事件冒泡的顺序

由于受到模板系统的限制,我写在页面上的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里面readyhandler第一个被触发,请问在不挪移代码顺序的情况下有何办法呢?

伊谢尔伦伊谢尔伦2835 days ago554

reply all(3)I'll reply

  • 怪我咯

    怪我咯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>

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:45:01

    可以把header 和body 要做的事情放到函数中在footer中调用吧

    reply
    0
  • 黄舟

    黄舟2017-04-10 12:45:01

    如果初始化的工作不依赖于页面其它资源的加载,可以把footer的初始化工作放到ready函数外面,
    使用一个匿名函数使其立即执行。

    这样的好处就是弱化了header.php和footer.php的脚本依赖关系。

    reply
    0
  • Cancelreply