jQuery document.ready奇怪的行为

时间:2011-12-20 06:08:58

标签: jquery asp.net fancybox

我们正试图在页面成功回发后的页面加载事件上显示fancybox内的消息。我们使用ASP.NET的Page.RegisterClientScript方法将脚本注册到页面中。这是.cs文件中的代码:

Page.ClientScript.RegisterStartupScript(GetType(), "Script", "ShowPopup('popup');", true);  

这是javsacript函数ShowPopup:

function showPopup(p) {
    ShowFancyBoxDiv("#divMessage", 50, 300);
}

但是当我们这样做时,只有窗口视图中的第一页显示为灰色,当向下滚动时,页面的其余部分仍处于活动状态并且未被打开。

但是当我们添加一个计时器时,如下所示,一切正常。

$(document).ready(function () {
    setTimeout(function () {
        ShowFancyBoxDiv("#divMessage", 50, 300);
        $("#fancybox-close").css("display", "none");
    }, 1000);
});

那么,任何人都可以解释这里发生了什么。 document.ready应该自动检查文件是否满载,那为什么我们需要使用那个定时器功能?感谢。

1 个答案:

答案 0 :(得分:0)

我怀疑你可能仍然有元素加载,比如图像。就绪意味着DOM准备就绪。这并不意味着你所说的一切都已加载。如果您需要,请使用.load

$(window).load( function() {
   //code
} );

本网站上有一篇很好的文章与此相关。

http://web.enavu.com/daily-tip/daily-tip-difference-between-document-ready-and-window-load-in-jquery/