仅在支持JS时才删除一些CSS

时间:2011-12-29 03:41:34

标签: javascript jquery html css

如果不支持Javascript,我有2个Div,我想插入一个类。

所以考虑一下..一个Div有class="no-js-left"而另一个有class="no-js-right"

检测这个的最简单的方法是什么,删除这些是JS支持不使用Modernizr的东西?

我也在使用jQuery,如果这意味着什么

3 个答案:

答案 0 :(得分:8)

如果没有JavaScript,您的标记将保持不变。为此,您必须先将类添加到HTML中,然后使用JavaScript删除这些类。

由于您使用的是jQuery,因此可以使用.removeClass()

轻松取出它们
$('.no-js-left, .no-js-right').removeClass('.no-js-left .no-js-right');

答案 1 :(得分:1)

您还应该考虑使用根元素类名和不同的CSS选择器,例如:

<html class="js-disabled">
<head>
    <script type="text/javascript">
      document.getElementsByTagName("html")[0].className = "js-enabled";
    </script>

.js-enabled .something { /* ... */ }
.js-disabled .something { /* ... */ }

这个解决方案比BoltClocks的答案有几个优点:

  1. 它实际上更快,因为它与页面呈现同时进行评估
  2. 如果你想稍后放弃它,你不依赖于jQuery; - )
  3. 我宁愿.js-disabled .something而不是.js-disabled-something(个人偏好)

答案 2 :(得分:-1)

使用以下代码。如果浏览器支持JavaScript,则下面的代码将执行并隐藏包含类no-js-leftno-js-right的div。

$(document).ready(function() {
    $('.no-js-left').hide();
    $('.no-js-right').hide();
});

此代码只隐藏div而不是实际删除它们。

如果要从页面中删除div,请使用

$(document).ready(function() {
    $('.no-js-left').remove();
    $('.no-js-right').remove();
});

<强>更新: 如果您只想删除类,请使用

$(document).ready(function() {
    $('.no-js-left').removeClass('.no-js-left');
    $('.no-js-right').removeClass('.no-js-right');
});