调用的函数未定义

时间:2013-04-06 15:16:00

标签: jquery scope

在网页的<head>中,我在文档准备就绪中具有以下功能:

<script type="text/javascript">
    jQuery(document).ready(function ($){
        function productImageCycle(){
            // Function contents...
        };
    });
</script>

该函数的内容调用指定元素上的jQuery Cycle插件。对于AJAX编辑的内容,我可以使用productImageCycle();从同一文档就绪事件中的任何其他地方成功调用此内容。

然而 - 在结束</body>标记之前 - 我调用相同的插件(以建议的方式),以便在页面加载时应用它:

<script type="text/javascript">
    jQuery(document).ready(function ($){
        // Function... (identical to contents of "productImageCycle")
    });
</script>

但这意味着我正在重复代码。

我尝试用调用<head>中声明的函数来替换后者,但是在页面加载时,插件无法工作,浏览器控制台告诉我未定义productImageCycle。

我可以在<head>内的页面加载中轻松调用它,但我会相信这是一个坏主意;是吗?如果是这样,有没有办法从<body>内调用它?

注意:我想这与范围有关 - 我试图了解这个概念,但它还没有完成。

1 个答案:

答案 0 :(得分:1)

我建议不要在另一个函数中声明顶级函数。你为什么不转头码?这样,您也可以省略$(document).ready以供将来通话。

目:

function productImageCycle(){
    jQuery(document).ready(function ($){
        // Function contents...
    });
}();

(注意最后的(),直接调用该函数。)