JQuery对话框会在页面加载时瞬间显示

前端之家收集整理的这篇文章主要介绍了JQuery对话框会在页面加载时瞬间显示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建了一个页面,它有一个基于JQuery的对话框,使用标准的JQuery UI功能。我这样做的开箱即用功能的JQuery …没有什么特别的。这里是我的对话框的HTML:
<div id = "myDialog">
    <!-- ... more html in here for the dialog -->
</div>

然后jQuery在javascript中调用,将< div>到对话框:

// pruned .js as an example of kicking up a JQuery dialog
    $('#myDialog').dialog({
        autoOpen: false,title: 'Title here',modal: true
        }
    });

再次,普通的jQuery。因此,您可以通过点击父页面上的链接来启动此向导,然后生成一个JQuery对话框,其中包含一大堆HTML,其中包含图片等。

在我继续开发此网页时,我开始注意到,当我在浏览器中加载网页时,< div>标签我把JQuery转换成对话框将很简单地显示。然后页面将如预期那样工作。换句话说,对话框不会被隐藏,它将在页面中简单地在线显示。相当丑陋和不专业的看!但在分秒之后,页面将正确呈现,看起来像我预期/想要的。

随着时间的推移,随着页面大小的增长,页面将保持不正确呈现的时间增加。我的猜测是,浏览器的渲染引擎正在渲染的页面,因为它正在加载,然后在结束它启动JQuery,将转换< div>进入对话框。这个JQuery函数然后将简单的< div>到一个JQuery对话框并隐藏它(因为我有autoOpen属性设置为false)。一些浏览器< cough> IE< / cough>显示它比其他更长。我的大对话框现在导致页面不正确地渲染约1秒… YUCK!

解决方法

你可以添加一些CSS,所以它是默认隐藏的,没有onload代码需要:
#myDialog { display: none; }

有了这个,没有其他代码是必要的,当你打开对话框,它会扭转这种风格…所以没有额外的运行document.ready。或者,如果你有很多对话框,给它一个类,像这样:

<div id="myDialog" class="dialog"></div>

有了这个CSS:

.dialog { display: none; }

在几乎所有的情况下,jQuery使用display style属性来隐藏东西,所以使用它来初始隐藏一些东西将适用于任何你想使用元素以后,无论是一个对话框,一个简单的.fadeIn()等。

猜你在找的jQuery相关文章