我有一个带有类的html元素,即文章:
<article> Content </article>
对于我的jQuery脚本,它意味着应该添加一些之前准备的特定类:
$('article').addClass('rounded box-shadow gradient-bright');
我在整个网页上都有一些文章和其他类似内容,因此,如果要更改某些内容,只需要在一个地方执行即可-javascript脚本。
但是问题是,我应该如何使用jQuery获得最佳结果?我不希望用户必须在加载的页面上看到更改(例如,缓慢的传输,因此开始时是方框,然后他看到带有阴影的圆形方框...他肯定应该立即看到所有更改)。
所以...
$(window).ready( /* add class */ ) ...
或...
$(document).ready( /* add class */ ) ...
或...
没有就绪功能,只需/ *添加类* /
或者也许还有其他解决方法?
Edit将<div class="article">
更改为<article>
形式;)但这仅是示例...
您应该使用文档处理方式。这意味着代码将在构建DOM之后的最早时间执行。
要对此进行扩展:窗口就绪还等待外部源的加载(图像等)。
您可以尝试类似的东西
jQuery('html').addClass('prepStyles');
并向需要样式化的元素添加样式
.prepStyles .article {
/* your styles to make the article look nice, resembling .rounded.box-shadow.gradient-bright */
}
这将立即以所需样式加载那些.article元素。但是,为了使环境整洁,您可以执行
$(document).ready(function () {
$('.article').addClass('rounded box-shadow gradient-bright');
});
这将重新应用.prepStyles .article
中已经定义的样式,现在您可以从::中删除该类。
$(document).ready(function () {
…
jQuery('html').removeClass('prepStyles');
});
避免FOUC(无样式内容的闪烁)-Paul Irish的article可能会对您有所帮助。正如ikanobori所指并使用Pauls技术一样,如果您的css依赖于背景图像,则在准备就绪的窗口上清除js类可能会很有用。只有在这个时候,您才能确定所有这些都已加载。
这里最好做的是$(document).ready( /* add class */ ) ...
,因为文档小于窗口