jQuery,CSS-页面加载后何时使用addClass函数

问题描述 投票:1回答:4

我有一个带有类的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>形式;)但这仅是示例...

jquery html css preload
4个回答
3
投票

您应该使用文档处理方式。这意味着代码将在构建DOM之后的最早时间执行。

要对此进行扩展:窗口就绪还等待外部源的加载(图像等)。


2
投票

您可以尝试类似的东西

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');
});

1
投票

避免FOUC(无样式内容的闪烁)-Paul Irish的article可能会对您有所帮助。正如ikanobori所指并使用Pauls技术一样,如果您的css依赖于背景图像,则在准备就绪的窗口上清除js类可能会很有用。只有在这个时候,您才能确定所有这些都已加载。


0
投票

这里最好做的是$(document).ready( /* add class */ ) ...,因为文档小于窗口

© www.soinside.com 2019 - 2024. All rights reserved.