【问题标题】:How can I remove all CSS classes using jQuery/JavaScript?如何使用 jQuery/JavaScript 删除所有 CSS 类?
【发布时间】:2010-11-28 08:10:11
【问题描述】:

不是为元素可能拥有的每个类单独调用$("#item").removeClass(),是否有一个可以调用的函数从给定元素中删除所有CSS类?

jQuery 和原始 JavaScript 都可以工作。

【问题讨论】:

    标签: javascript jquery dom


    【解决方案1】:
    $("#item").removeClass();
    

    不带参数调用removeClass 将删除所有项目的类。


    也可以使用(但不一定推荐。正确的方式就是上面那个):

    $("#item").removeAttr('class');
    $("#item").attr('class', '');
    $('#item')[0].className = '';
    

    如果您没有 jQuery,那么这几乎是您唯一的选择:

    document.getElementById('item').className = '';
    

    【讨论】:

    • 现在attr()的版本不应该是prop()吗?
    • 在版本 1.11.1 中调用不带参数的 removeClass() 似乎不再起作用
    • @Vincent 似乎是 jQuery 中引入的一个错误,因为他们的文档明确指出:If a class name is included as a parameter, then only that class will be removed from the set of matched elements. If no class names are specified in the parameter, all classes will be removed.api.jquery.com/removeclass
    • 是的,我也怀疑这是一个错误,而不是设计使然。与此同时,下面的纯 JavaScript 工作得很好。 document.getElementById("item").removeAttribute("class");
    • jQuery UI 1.9 存在问题。如果 removeClass() 不起作用,请使用 removeAttr('class')
    【解决方案2】:

    等一下,如果没有指定任何具体内容,removeClass() 是否默认删除所有类?所以

    $("#item").removeClass();
    

    会自己做...

    【讨论】:

    • 是的:“从匹配的元素集中删除所有或指定的类。”
    • 现在是documented 正确:如果参数中没有指定类名,则所有类都将被删除。
    【解决方案3】:

    只需将真实 DOM 元素的className 属性设置为''(无)。

    $('#item')[0].className = ''; // the real DOM element is at [0]
    

    其他人说只调用removeClass 就可以了——我用Google jQuery Playground 测试了这个:http://savedbythegoog.appspot.com/?id=ag5zYXZlZGJ5dGhlZ29vZ3ISCxIJU2F2ZWRDb2RlGIS61gEM ...并且它可以工作。所以你也可以这样做:

    $("#item").removeClass();
    

    【讨论】:

      【解决方案4】:

      当然。

      $('#item')[0].className = '';
      // or
      document.getElementById('item').className = '';
      

      【讨论】:

        【解决方案5】:

        删除特定类:

        $('.class').removeClass('class');
        

        如果元素有 class="class another-class"。

        【讨论】:

        • 最后一句话似乎难以理解。你能解决它吗?
        【解决方案6】:

        最短的方法

        $('#item').removeAttr('class').attr('class', '');
        

        【讨论】:

          【解决方案7】:

          你可以试试:

          $(document).ready(function() {
             $('body').find('#item').removeClass();
          });
          

          如果您必须在没有类名的情况下访问该元素,例如您必须添加一个新的类名,您可以这样做:

          $(document).ready(function() {
             $('body').find('#item').removeClass().addClass('class-name');
          });
          

          我在我的项目中使用该函数在 HTML 构建器中删除和添加类。

          【讨论】:

            【解决方案8】:
            $('#elm').removeAttr('class');
            

            属性“class”将不再出现在“elm”中。

            【讨论】:

            • 这对我有用。 removeClass(); 对我不起作用。
            【解决方案9】:

            我喜欢使用原生 JavaScript 来做这件事,信不信由你!

            1.  

               // Remove all items all class
               const items = document.querySelectorAll('item');
               for (let i = 0; i < items.length; i++) {
                   items[i].className = '';
               }
              
            2.  

               // Only remove all class of first item
               const item1 = document.querySelector('item');
               item1.className = '';
              

            jQuery 方式

            1. $("#item").removeClass();

            2. $("#item").removeClass("class1 ... classn");

            【讨论】:

              【解决方案10】:

              由于不是所有版本的 jQuery 都是一样的,你可能会遇到我遇到的同样的问题,这意味着调用 $("#item").removeClass();实际上并没有删除该类(可能是一个错误)。

              更可靠的方法是简单地使用原始 JavaScript 并完全删除 class 属性。

              document.getElementById("item").removeAttribute("class");
              

              【讨论】:

                【解决方案11】:

                让我们使用这个例子。也许您希望您网站的用户知道某个字段是有效的,或者需要通过更改字段的背景颜色来引起注意。如果用户点击重置,那么您的代码应该只重置具有数据的字段,而不必费心循环浏览页面上的所有其他字段。

                这个 jQuery 过滤器将只删除类“highlightCriteria” 具有此类的输入或选择字段。

                $form.find('input,select').filter(function () {
                    if((!!this.value) && (!!this.name)) {
                        $("#"+this.id).removeClass("highlightCriteria");
                    }
                });
                

                【讨论】:

                  【解决方案12】:

                  试试removeClass

                  例如

                  var nameClass=document.getElementsByClassName("clase1");
                  console.log("after", nameClass[0]);
                  $(".clase1").removeClass();
                  var nameClass=document.getElementsByClassName("clase1");
                  console.log("before", nameClass[0]);
                  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
                  <div class="clase1">I am a Div with class="clase1"</div>

                  【讨论】:

                    【解决方案13】:

                    我遇到了类似的问题。在我的情况下,在禁用元素上应用了 aspNetDisabled 类,并且所有禁用的控件都有错误的颜色。所以,我使用 jQuery 删除了我想要的每个元素/控件上的这个类,现在一切正常并且看起来很棒。

                    这是我删除 aspNetDisabled 类的代码:

                    $(document).ready(function () {
                    
                        $("span").removeClass("aspNetDisabled");
                        $("select").removeClass("aspNetDisabled");
                        $("input").removeClass("aspNetDisabled");
                    
                    });
                    

                    【讨论】:

                    • “被应用那个”附近是无法理解的。你能修好它吗? (但没有“编辑:”、“更新:”或类似的 - 问题/答案应该看起来好像是今天写的。)
                    猜你喜欢
                    • 2012-01-08
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多