【发布时间】:2019-04-08 08:53:36
【问题描述】:
我需要使用 jQuerys addClass 方法添加一个类。它在我的所有其他代码中都可以正常工作,但在这个特定的代码中,它向元素添加了“类”一词,但没有添加实际的类。
所以 - 在我点击汉堡菜单按钮之前,它看起来像这样:<body>,当我点击汉堡菜单按钮时,我的 html 看起来像这样:<body class>,但我希望它看起来像 <body class="no-scroll">。每次单击该按钮时,我还可以在浏览器的开发人员工具中看到它闪烁,所以有些事情正在发生,但不是我想要的。
我在另一个函数中使用了这行代码(请参阅提供的最后一个),它工作正常。
之前我在 body-element 上有一个 removeClass,但我已经删除了所有这些,但它仍然不起作用。
不起作用的功能:
$('.hamburgermenu-button').click(function() {
$('.main-navigation').toggleClass('d-xs-none');
$('.hamburgermenu-button').toggleClass('collapsed');
$('.main-menu-container').addClass('sticky nav-show');
$('#search-extended').slideUp(200);
$("#search-icon").removeClass("show");
$('body').addClass('no-scroll');
});
它工作的功能:
headerSearchVisibility: function(visible) {
'use strict';
if(visible) {
$('#headerSearch').css('z-index',2);
$('#headerSearchResults').slideDown(200);
$('#overlay').show();
if((window).matchMedia("(max-width: 767.98px)").matches) {
$('body').addClass('no-scroll');
}
} else {
$('#headerSearchResults').slideUp(200);
$('#overlay').fadeOut(200);
}
},
我已经更新了我在这个问题中的代码,因为人们似乎专注于错误的事情。
【问题讨论】:
-
$('body').not('header')没有意义,因为<body>元素不能是<header>元素。你的意思是.not('.header')(也就是没有.header类的body)? -
不,在这段代码中,标题元素位于正文中,我希望它适用于除此之外的所有内容。但我试过删除
.not('header'),它也不起作用 -
你可以试试 "body:not(header)" 这是一个 CSS 选择器
-
$('body *:not(.header)').addClass('no-scroll');,但你为什么要这么做? -
我在页眉中有一些需要滚动的东西。但是我不希望站点的其余部分(背景)在折叠时滚动,这就是为什么我想将该类应用于除标题之外的所有内容(正文)。
标签: jquery