【问题标题】:jQuery Document Ready and Function ScopejQuery 文档就绪和函数范围
【发布时间】:2012-08-05 19:31:11
【问题描述】:

我想提供帮助函数,允许复杂的基于 jQuery 的 UI 的各种组件隐藏或显示正在加载的 div(在从页面的各个部分发起 Ajax 调用时使用)。

为此,我最初编写的代码如下:

<script type="text/javascript">
$(function ()
{
    var loadingControl = $("#loading");

    function showLoading() {
        loadingControl.show();
    }
}
</script>

但是,我很快意识到 showLoading 仅在该特定文档就绪的范围内。

听从

的建议

https://*.com/a/1055799/141172

我在全局范围内声明了 showLoading,如下所示:

<script type="text/javascript">
var showLoading;
$(function ()
{
    var loadingControl = $("#loading");

    function showLoading() {
        loadingControl.show();
    }
}
</script>

但是,我仍然发现 showLoading 在稍后执行的 document ready 块中不可用。错误是

属性“showLoading”的值为 null 或未定义,不是 Function 对象

可以在此处看到此行为:

http://jsfiddle.net/NfXFT/4/

jsFiddle 还证明 showLoading 实现的 document ready 在调用它的 document ready 块之前运行。

出了什么问题,我怎样才能使这个辅助方法可用?

我在 document ready 块中定义它,因为它依赖于可用的“#loading”。是否有更好的方法来实现提供帮助函数来隐藏/显示加载屏幕的相同目标?我想把它保存在一个辅助函数中,因为以后实现可能会改变。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    发布后,我意识到自己做错了什么。

    function showLoading() {
        loadingControl.show();
    }
    

    应该是

    showLoading = function() {
        loadingControl.show();
    }   
    

    【讨论】:

      最近更新 更多