当我使用jquery-ui 按钮使<input type='checkbox'>
元素表现得像按钮时,我得到了一个漂亮的按钮,但是在加载页面时它会闪烁。
在$("#checkbout").button()
运行之前,我看到一个正常的、无样式的结帐,几毫秒后它变成了一个有样式的按钮。
在没有这种闪烁效果的情况下使用 Button 的正确方法是什么?
当我使用jquery-ui 按钮使<input type='checkbox'>
元素表现得像按钮时,我得到了一个漂亮的按钮,但是在加载页面时它会闪烁。
在$("#checkbout").button()
运行之前,我看到一个正常的、无样式的结帐,几毫秒后它变成了一个有样式的按钮。
在没有这种闪烁效果的情况下使用 Button 的正确方法是什么?
与其说是您错误地使用了按钮小部件,不如说是您正在体验 FOUC(无样式内容的 Flash)。当您的页面有大量元素和在页面准备好时运行的 JavaScript 时,就会发生这种情况。您可以在几秒钟内看到页面没有样式,因为页面需要很长时间才能加载。
有几种策略可以避免这种情况,但一种简单的方法是为按钮添加样式以将其隐藏(使用 JavaScript)在 之外$(document).ready
,然后在文档准备好时删除样式:
<head>
<script type="text/javascript">
document.write("<style type='text/css'>.button { display: none; }</style>");
$(document).ready(function () {
/* Remove the class hiding the button and call the widget: */
$(".button").removeClass("button").button();
});
</script>
</head>
示例: http: //jsfiddle.net/andrewwhitaker/gdbB5/(用于setTimeout
模拟页面加载)
您还可以将此技术应用于遇到问题的整个内容元素(例如div
包含大部分内容且被 JavaScript 大量修改的内容)。