Javascript 如何在保持渐进增强的同时隐藏要使用jquery切换的元素

Javascript 如何在保持渐进增强的同时隐藏要使用jquery切换的元素,javascript,jquery,css,progressive-enhancement,Javascript,Jquery,Css,Progressive Enhancement,我能找到的所有答案都建议在css中添加display:none。。。但是对于没有javascript的用户来说,他们永远看不到元素 jQuery(document).ready(function($){ $('#toggleElm').hide(); $('#toggleBtn').click(function(){ $('#shareLink').slideToggle(); }) }); 仍然会导致元素在页面加载期间出现和消失,因为页面在DOM

我能找到的所有答案都建议在css中添加display:none。。。但是对于没有javascript的用户来说,他们永远看不到元素

jQuery(document).ready(function($){

    $('#toggleElm').hide();

    $('#toggleBtn').click(function(){
        $('#shareLink').slideToggle();
    })

});
仍然会导致元素在页面加载期间出现和消失,因为页面在DOM完成之前就开始呈现

<script type='javascript'> 
    document.write("<style type='text/css'> #toggleElm {display:none} </style>");
</script>

编写(“#togglelm{display:none}”);

正文的顶部似乎太黑了。

一个元素的结束标记被解析后,就会在DOM中注册

因此,可以直接在该选项卡之后隐藏元素

<div id="toggleElm">Foo</div>
<script>
    // Note: No $(document).ready()!
    $('#toggleElm').hide();
</script>
Foo
//注意:没有$(document).ready()!
$('#togglelm').hide();
显然,这取决于jQuery是否已经加载(即,页面底部没有包含jQuery)。如果是这种情况,请还原为纯ol'JavaScript:

<div id="toggleElm">Foo</div>
<script>
    document.getElementById('toggleElm').style.display = 'none';
</script>
Foo
document.getElementById('toggleElm').style.display='none';

元素的结束标记一经解析,就在DOM中注册

因此,可以直接在该选项卡之后隐藏元素

<div id="toggleElm">Foo</div>
<script>
    // Note: No $(document).ready()!
    $('#toggleElm').hide();
</script>
Foo
//注意:没有$(document).ready()!
$('#togglelm').hide();
显然,这取决于jQuery是否已经加载(即,页面底部没有包含jQuery)。如果是这种情况,请还原为纯ol'JavaScript:

<div id="toggleElm">Foo</div>
<script>
    document.getElementById('toggleElm').style.display = 'none';
</script>
Foo
document.getElementById('toggleElm').style.display='none';

如果您不想等待文档准备就绪,请不要等待文档准备就绪

东西

document.getElementById('foo').style.display='none';
如果您不想等待文档准备就绪,请不要等待文档准备就绪

东西

document.getElementById('foo').style.display='none';
为了防止javascript FOUC并让您的页面完全可访问,您应该在
元素中应用一个
.no js
类,然后使用该类为您的元素设置样式,就像html5样板+Modernizer一样

当然,您必须很快通过javascript在文档的
中删除该类,使用如下脚本

<script>
    (function(d) { 
        d.className = d.className.replace(/(^|\b)no\-js(\b|$)/, 'js');
    }(document.documentElement));
</script>

(职能(d){
d、 className=d.className.replace(/(^ |\b)no \-js(\b |$)/,'js');
}(document.documentElement));
因此,如果启用javascript,它将把
.no js
类变成
.js


使用这种方法,即使javascript不可用,您的页面仍然可以访问,因为在这种情况下,将应用最后一条CSS规则,保持元素可见和可访问。

为了防止javascript FOUC并让页面完全可访问,您应该在
元素中应用一个
.no js
类,然后使用该类来设置元素的样式,就像html5样板文件+Modernizer那样

当然,您必须很快通过javascript在文档的
中删除该类,使用如下脚本

<script>
    (function(d) { 
        d.className = d.className.replace(/(^|\b)no\-js(\b|$)/, 'js');
    }(document.documentElement));
</script>

(职能(d){
d、 className=d.className.replace(/(^ |\b)no \-js(\b |$)/,'js');
}(document.documentElement));
因此,如果启用javascript,它将把
.no js
类变成
.js


使用这种方法,即使javascript不可用,您的页面仍然可以访问,因为在这种情况下,将应用最后一条CSS规则,让您的元素可见和可访问。

我喜欢让javascript尽可能不引人注目。我喜欢让javascript尽可能不引人注目。我喜欢让javascript尽可能不引人注目。我喜欢让javascript尽可能不引人注目。