我正在使用Bootstrap .affix插件,我试图在添加词缀类时尝试做一些导航栏,但出于某种原因我似乎无法访问该类一次它被添加到导航栏。
请记住,navbar只是我创建的一个变量。
navbar.affix({
offset: {
top: header.height()
}
});
上面的代码在滚动页眉的高度后将.affix类添加到我的导航栏中,当我查看Chrome开发人员工具时,我看到该类已添加,但是当我尝试执行以下操作时:
navbar.hasClass('affix', function() { // Do something });
上面的代码永远不会被调用..好像.affix永远不会被添加到导航栏。
我在这里遗漏了什么吗?它是否正在做一些我不知道的事情阻止我访问.affix类?
答案 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-top
和affix
。
您可以将affix-bottom
与hasClass
一起使用,或者您可以更好地使用jQuery is
,如下所示:
OR
来自Bootstrap对Affix的描述:
- 首先,插件添加
if (navbar.is('.affix, .affix-top, .affix-bottom')) { // Do you stuff here }
以指示元素在其中 最顶尖的位置。此时不需要CSS定位。- 滚动过去想要贴的元素应该触发实际 粘贴。这是
.affix-top
替换.affix
并设置位置的位置: 固定; (由Bootstrap的CSS提供)。- 如果定义了底部偏移, 滚过它应该用
醇>.affix-top
替换.affix
。以来 偏移是可选的,设置一个需要您设置适当的 CSS。在这种情况下,添加position:absolute;必要时。插件 使用数据属性或JavaScript选项来确定在何处 从那里定位元素。
答案 1 :(得分:0)
如果您使用的是jquery .hasClass,它只返回true / false并且不接受函数;
if($(navbar).hasClass('affix'))
{
CODE HERE
};