Bootstrap .affix - jQuery hasClass无效

时间:2015-11-21 03:10:25

标签: javascript jquery twitter-bootstrap

我正在使用Bootstrap .affix插件,我试图在添加词缀类时尝试做一些导航栏,但出于某种原因我似乎无法访问该类一次它被添加到导航栏。

请记住,navbar只是我创建的一个变量。

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

上面的代码在滚动页眉的高度后将.affix类添加到我的导航栏中,当我查看Chrome开发人员工具时,我看到该类已添加,但是当我尝试执行以下操作时:

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

上面的代码永远不会被调用..好像.affix永远不会被添加到导航栏。

我在这里遗漏了什么吗?它是否正在做一些我不知道的事情阻止我访问.affix类?

2 个答案:

答案 0 :(得分:2)

您无法将功能分配给hasClass方法。而是使用基于hasClass结果的真/假条件来调用您的函数。

  

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

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

编辑:我已使用navbar.attr('class')检查了哪个类添加到元素中,结果为main-menu affix-top。因此,如果您检查hasClass('affix-top')它应该有效。 https://jsfiddle.net/yqy7gah6/14/

编辑2 :您应该更好地检查是否存在这三个类中的任何一个,以确定已应用affix:以下是affix插件的工作原理:{{1} },affix-topaffix
您可以将affix-bottomhasClass一起使用,或者您可以更好地使用jQuery is,如下所示:

OR

来自Bootstrap对Affix的描述:

  
      
  1. 首先,插件添加if (navbar.is('.affix, .affix-top, .affix-bottom')) { // Do you stuff here } 以指示元素在其中   最顶尖的位置。此时不需要CSS定位。
  2.   
  3. 滚动过去想要贴的元素应该触发实际   粘贴。这是.affix-top替换.affix并设置位置的位置:   固定; (由Bootstrap的CSS提供)。
  4.   
  5. 如果定义了底部偏移,   滚过它应该用.affix-top替换.affix。以来   偏移是可选的,设置一个需要您设置适当的   CSS。在这种情况下,添加position:absolute;必要时。插件   使用数据属性或JavaScript选项来确定在何处   从那里定位元素。
  6.   

答案 1 :(得分:0)

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

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