$(document).ready无法替换页面底部声明的js,但我需要将脚本放在顶部

时间:2012-09-27 05:33:17

标签: javascript jquery document-ready

我有基于JQuery的选项卡导航,只有在菜单的html之后才能使用。如果它放在最后也可以工作,但是当我把相同的脚本放在$(document).ready ath中时,它会中断。

我认为这(放在页面顶部):

<script type="text/javascript">
$(document).ready(function(){
    mouseovertabsmenu.init("mytabsmenu", "mysubmenuarea", true);
});
</script>

将与此相同:

    <script type="text/javascript">
        mouseovertabsmenu.init("mytabsmenu", "mysubmenuarea", true);
    </script>
</html>

哪个位于页面底部并且有效。我怎么能把这个功能放在顶部,甚至可以从一个单独的文件中包含它?

2 个答案:

答案 0 :(得分:1)

我遇到了这个问题,在jquery包含链接之后我在头部使用了这个:

$(document).ready(myfunction());

由于未加载对象而失败。我应该把我的电话包裹在一个函数中:

$(document).ready(function () {
    myfunction();
});

只有在文档正确加载后才能正常工作。

答案 1 :(得分:0)

建议将脚本放在页面末尾的原因是,在您尝试访问它们之前将HTML元素加载到页面上。

无论您在何处放置代码,最好包装DOM ready事件,以确保在您尝试访问页面中的元素之前正确加载完整的HTML文档。

也许在你的情况下

 <script type="text/javascript">
        mouseovertabsmenu.init("mytabsmenu", "mysubmenuarea", true);
    </script>

似乎在没有被封装在DOM中时工作就是函数无法访问,因为它的范围被DOM准备好阻止了