提问者:小点点

如何在纯JavaScript中切换元素的类?


我正在寻找一种将jQuery代码(在响应菜单部分使用)转换为纯JavaScript的方法。

如果很难实现,可以使用其他JavaScript框架。

$('.btn-navbar').click(function()
{
    $('.container-fluid:first').toggleClass('menu-hidden');
    $('#menu').toggleClass('hidden-phone');

    if (typeof masonryGallery != 'undefined') 
        masonryGallery();
});

共3个答案

匿名用户

2014 答:classList.toggle() 是大多数浏览器的标准和支持。

较旧的浏览器可以使用classlist.js作为classlist.tggle():

var menu = document.querySelector('.menu') // Using a class instead, see note below.
menu.classList.toggle('hidden-phone');

另外,您不应该使用id(它们会将全局变量泄漏到JS window对象中)。

匿名用户

以下是用ES6实现的解决方案

const toggleClass = (el, className) => el.classList.toggle(className);

使用示例

toggleClass(document.querySelector('div.active'), 'active'); // The div container will not have the 'active' class anymore

匿名用户

看看这个例子:JS Fiddle

function toggleClass(element, className){
    if (!element || !className){
        return;
    }

    var classString = element.className, nameIndex = classString.indexOf(className);
    if (nameIndex == -1) {
        classString += ' ' + className;
    }
    else {
        classString = classString.substr(0, nameIndex) + classString.substr(nameIndex+className.length);
    }
    element.className = classString;
}