引导程序.粘贴-jQuery hasClass不工作

Bootstrap .affix - jQuery hasClass not working

本文关键字:工作 hasClass -jQuery 粘贴 引导程序      更新时间:2023-09-26

我正在使用Bootstrap.词缀插件,我试图在添加词缀类时对导航栏做一些事情,但由于某种原因,一旦将该类添加到导航栏,我似乎就无法访问它。

请记住,导航栏只是我创建的一个变量。

navbar.affix({
    offset: {
        top: header.height()
    }
});

上面的代码在滚动了标题的高度后,在导航栏上添加了.cottach类,当我在Chrome开发工具中查看时,我看到这个类确实被添加了,但当我尝试这样做时:

navbar.hasClass('affix', function() { // Do something });

上面的代码永远不会被调用。。就好像.词缀从未添加到导航栏中。

我是不是遗漏了什么?它是不是在做一些我不知道的事情,以某种方式阻止了我访问.s词缀类?

不能将函数分配给hasClass方法。相反,使用基于hasClass结果的true/false条件来调用函数。

如果将类分配给元素,.hasClass()方法将返回true。。。

https://api.jquery.com/hasclass/

EDIT:我已经检查了使用navbar.attr('class')将哪个类添加到元素中,结果是main-menu affix-top。因此,如果您检查hasClass('affix-top'),它应该可以工作。https://jsfiddle.net/yqy7gah6/14/

EDIT 2:您应该更好地检查是否存在这三个类中的任何一个,以确定已经应用了affix:以下是词缀插件的工作原理:affix-topaffixaffix-bottom
您可以将hasClassOR一起使用,也可以更好地使用jQuery is,如下所示:

if (navbar.is('.affix, .affix-top, .affix-bottom')) {
  // Do you stuff here
}

来自Bootstrap对词缀的描述:

  1. 首先,插件添加.affix-top以指示元素在最上面的位置。在这一点上,不需要CSS定位
  2. 滚动经过您想要粘贴的元素应该会触发实际粘贴。这是.affix取代.affix-top并设置位置的位置:固定的(由Bootstrap的CSS提供)
  3. 如果定义了底部偏移,滚动经过它应该用CCD_ 17代替CCD_。自从偏移是可选的,设置偏移需要设置适当的CSS。在这种情况下,添加position:绝对;必要时。插件使用数据属性或JavaScript选项来确定在哪里从那里定位元素

如果使用jquery.hasClass,它只返回true/false,不接受函数;

if($(navbar).hasClass('affix'))
{ 
 CODE HERE  
};