我想提供帮助函数,允许复杂的基于jQuery的UI的各种组件隐藏或显示加载 div (在从页面的各个部分启动Ajax调用时使用)。
为此,我最初编写了这样的代码:
<script type="text/javascript">
$(function ()
{
var loadingControl = $("#loading");
function showLoading() {
loadingControl.show();
}
}
</script>
但是,我很快意识到 showLoading 仅在特定的文档准备范围内。
遵循
的建议https://stackoverflow.com/a/1055799/141172
我在全球范围内声明 showLoading ,如下所示:
<script type="text/javascript">
var showLoading;
$(function ()
{
var loadingControl = $("#loading");
function showLoading() {
loadingControl.show();
}
}
</script>
但是,我仍然发现 showLoading 在稍后执行的文档就绪块中不可用。错误是
属性“showLoading”的值为null或未定义,而不是Function对象
这种行为可以在这里看到:
jsFiddle还证明 showLoading 实现的文档就绪在调用它的文档就绪块之前运行。
出了什么问题,我怎样才能使这个辅助方法可用?
我在文档就绪块中定义它,因为它依赖于'#loading'可用。是否有更好的方法来实现提供辅助功能来隐藏/显示加载屏幕的相同目标?我希望将其保留在辅助函数中,因为实现可能会在以后更改。
答案 0 :(得分:5)
发布后,我意识到我做错了什么。
function showLoading() {
loadingControl.show();
}
应该是
showLoading = function() {
loadingControl.show();
}