我正在寻找一种将jQuery代码(在响应菜单部分使用)转换为纯JavaScript的方法。
如果很难实现,可以使用其他JavaScript框架。
$('.btn-navbar').click(function()
{
$('.container-fluid:first').toggleClass('menu-hidden');
$('#menu').toggleClass('hidden-phone');
if (typeof masonryGallery != 'undefined')
masonryGallery();
});
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;
}