删除元素的所有类

removing all classes for an element

本文关键字:元素 删除      更新时间:2023-09-26

我很难删除一个元素上的所有类,然后使用switch语句在不同的页面上添加我想要的类

$(document).ready(function() {
switch (window.location.pathname) {
  case '/':
  $("body").removeClass().addClass('homepage');
  case '/users/sign_up':
  $('body').removeClass().addClass('contentpage');
}
});

我不太确定是否有文件。我也需要什么?

我的问题是,我的选择器不再只是主体,它是一个类,但它可能是少数几个类名之一。。我该怎么说"获取body标记,不管它的类是什么,删除所有类,然后添加我需要的"?

目前所发生的一切都是额外的类名被应用

有办法做到这一点吗?

感谢

ready回调没有问题。但是您忘记了switch中的break,这使得'homepage'类总是被'contentpage':替换

$(function() {
    switch (window.location.pathname) {
      case '/':
         document.body.className = 'homepage';
         break;
      case '/users/sign_up':
         document.body.className = 'contentpage';
         break;
    }
});

注意,我使用了className属性而不是jQuery的函数,这里要简单得多。

如jquery.com上所述:

$("body").removeClass(function() {
    return $(this).attr("class");
});

所以在你的情况下:

$(document).ready(function() {
    switch (window.location.pathname) {
        case '/':
            $("body").removeClass(function(){return $(this).attr("class")}).addClass('homepage');
            break;
        case '/users/sign_up':
            $('body').removeClass(function(){return $(this).attr("class")}).addClass('contentpage');
            break;
    }
});

编辑:现在有中断

使用jQuery,

$(document).ready(function() {
    switch (window.location.pathname) {
        case '/':
            $("body").attr('class', '').addClass('homepage');
        case '/users/sign_up':
            $('body').attr('class', '').addClass('contentpage');
    }
});