在执行函数之前如何进行正确的延迟?

时间:2016-07-20 12:43:41

标签: javascript jquery html asp.net animation

所以,我正在尝试在ASP.NET WebForms上为我的网站加载动画。我注意到有些页面的加载速度非常快,有些页面却没有。 我以这种方式执行了动画:

$(document).ready(function () {

         $('#loadingImage').hide();
         $('#loading').html("");
     });

但是现在我想延迟,大约在1-2秒内加载快速加载的页面不显示动画。 我试着这样做:

setTimeout(checkDocument, 3000);

  function hideLoading() {
      $('#loadingImage').hide();
      $('#loading').html("");
  }

  function checkDocument() {
      $(document).ready(hideLoading);
  };

我的HTML代码:

 <div id="loading" style="text-align: center" ><asp:Image ID="loadingImage" runat="server"  ImageUrl="~/Images/loading.gif" /></div>

所以,这是错误的。此代码立即执行我的动画,然后在3秒内关闭动画。 帮助找到正确的方法。 还有一个,我有这行代码

$('#loading').html("");

为什么如果我们不在html部分中不使用任何参数,那么动画就无法停止,当我们将“”带到html然后一切正常。请解释一下。

1 个答案:

答案 0 :(得分:0)

您需要做的是首先使加载动画不可见,然后在延迟后使其可见。最后,使用document.ready事件在加载所有内容时隐藏它。你现在正在做的只是推迟创建document.ready事件处理程序,这没有任何意义。 (不要忘记,创建一个事件处理程序实际上不会立即执行该函数,它只是创建一些侦听将来发生的事件的东西。)

将div定义更改为

public void AdmitStudent(Student student)
{
    try
    {
        if (_students.Count == MaximumNumberOfSeats)
        {
            ...
        }

        if (!_students.Contains(student))
        {
            // Add this line to indicate which school
            // the student is being admitted to
            student.School = this;

            _students.Add(student);

            _subject.OnNext(student);
        }
    }
    catch(Exception ex)
    {
        _subject.OnError(ex);
    }
}

如果可能的话,它应该是第一件放入页面<div id="loading" style="text-align: center" hidden> 部分的内容。

然后,在它下面,放入以下脚本标记:

<body>