我正在使用Bootstrap .affix插件,并尝试在添加affix类时执行导航栏的操作,但是由于某种原因,一旦将其添加到导航栏,我似乎无法访问该类。

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

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


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

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


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

我在这里想念什么吗?它是否正在执行我不知道的操作,从而使我无法访问.affix类?

最佳答案

您不能将函数分配给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-topaffixaffix-bottom
您可以将hasClassOR一起使用,或者最好像这样使用jQuery is

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


从Bootstrap对Affix的描述中:


  
  首先,插件会添加.affix-top来指示元素在其
  最上面的位置。此时,不需要CSS定位。
  滚动到要附加的元素后,应触发实际
  贴上。这是.affix替换.affix-top并设置位置的地方:
  固定; (由Bootstrap的CSS提供)。
  如果定义了底部偏移,
  滚动过去,应将.affix替换为.affix-bottom。以来
  偏移量是可选的,设置一个需要您设置适当的
  CSS。在这种情况下,添加位置:绝对;必要时。插件
  使用data属性或JavaScript选项确定要在哪里
  从那里放置元素。

关于javascript - Bootstrap .affix-jQuery hasClass无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33839287/

10-09 20:52