我正在使用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-top
,affix
和affix-bottom
。
您可以将hasClass
与OR
一起使用,或者最好像这样使用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/