1

我经常发现自己使用 jQuery 显示/隐藏元素,例如一个简单的选项卡式内容区域,其中第一个选项卡可见,而其他选项卡在使用 javascript 显示之前不可见。我知道使用 CSS 隐藏最初隐藏的那些(显示:无)然后用 JS 显示正确的那些不是好习惯,因为非 JS 用户将永远看不到任何东西。所以默认情况下我显示所有,然后用 JS 隐藏相关的。

但是,在这样做时,隐藏的元素将加载,然后仅在文档准备好时才隐藏。我怎样才能阻止这种情况发生?有没有一种方法可以优雅地降级,但在加载时不会出现元素,然后因为看起来有点劣质而迅速消失。

4

2 回答 2

4

不幸的是,Javascript 的工作方式,这似乎是不可能的。第一个渲染帧和隐藏元素的 JavaScript 执行之间总会有几分之一秒 我错了,jQuery似乎能够做到这一点。所以,CSS 是最好的方法。<noscript>幸运的是,您可以在臭名昭著的标签中添加备用 CSS 样式表:

<style type="text/css">
    #jquery-thing {
        display: none;
    }
</style>
<noscript>
    <style type="text/css">
        #jquery-thing {
            display: block !important;
        }
    </style>
</noscript>

这是 JSFiddle 链接:http: //jsfiddle.net/kylewlacy/dbWuc/

于 2012-08-23T11:39:03.820 回答
3

一些想法...

如果你不介意 jQuery 在页面上到处乱扔,而不是全部放在一个单独的文件中,你可以调用 $('#divToHide').hide(); 元素出现后立即。虽然不是很好的做法。尽管这取决于用例,但如果您主要是创建 5 页宣传册网站的设计师/主题者,您应该选择适合您的!

或者,如果您更像是技术人员,您可能会想.live()/.livequery()用 JS 处理并捕捉元素的插入,然后立即隐藏。看到这个帖子当一个新节点插入到dom中时是否有一个jquery事件触发?

于 2012-08-23T11:38:11.790 回答