【问题标题】:jQuery addClass() only semi-adding classjQuery addClass() 仅半添加类
【发布时间】: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


【解决方案1】:

根据我对您的示例的理解,您正在寻找一个不是标题元素的正文元素。

但不是这样:http://api.jquery.com/not/

<ul>
  <li>list item 1</li>
  <li>list item 2</li>
  <li>list item 3</li>
  <li>list item 4</li>
  <li>list item 5</li>
</ul>

$( "li" ).not( ":even" ).css( "background-color", "red" );

在本例中,它将搜索每个奇数 li 元素。

我建议你使用 children() 或 find() 元素并排除 header 元素。

【讨论】:

  • 没有。您已经锁定了一些奇怪的代码,而不是阅读实际问题。 OP 明确表示该问题与 cmets 中的标题元素无关。
  • 是的,非常清楚。感谢昆汀的耐心和宽容。
猜你喜欢
  • 1970-01-01
  • 2018-10-01
  • 2011-02-12
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多