【问题标题】:Bootstrap .affix - jQuery hasClass not workingBootstrap .affix - jQuery hasClass 不起作用
【发布时间】:2015-11-21 03:10:24
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 你能告诉导航栏变量是如何分配/填充的吗?

标签: javascript jquery twitter-bootstrap


【解决方案1】:

您不能将函数分配给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、@987654332 @ 和 affix-bottom.
您可以将hasClassOR 一起使用,或者您可以更好地使用jQuery is,如下所示:

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

来自Bootstrap对Affix的描述:

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

【讨论】:

  • 对于您上面的评论,navbar 是 $('.main-menu'),它是 nav 元素上的一个类。该元素还添加了 .affix,这是我在使用 jquery 时遇到的问题。
  • 我的在页面顶部时有类 affix-top,然后当它变为固定时,将 affix-top 删除并替换为 affix。好奇怪,不明白为什么jQuery找不到类。
  • 查看我的第二次编辑...实际上有 3 个类可以添加到您的 HTML 元素中...
  • @Lansana 请记住将其标记为答案,因为我希望它现在已经解决了您的问题...
  • 感谢您的大力帮助。我查看了文档和所有内容,似乎没有任何效果,但我一定会继续尝试,我一定会在这里遗漏一些东西。
【解决方案2】:

如果你使用 jquery .hasClass,它只返回真/假,不接受函数;

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

【讨论】:

  • 尝试过的条件、函数,它们都不起作用。就好像他们都忽略了 .affix 或 .affix 由于某种原因没有被看到。
  • @Lansana,那么当你的代码执行时它可能不存在?
  • 我不能真正使用 JSFiddle,因为这是一个更大项目的一部分,并且它位于开发服务器上,所以我也不能真正分享它。 Grr,我通常只使用普通的 javascript,但 bootstrap 让它变得很简单。
猜你喜欢
  • 2018-01-27
  • 2011-02-01
  • 1970-01-01
  • 2016-07-18
  • 2021-09-30
  • 1970-01-01
  • 2018-01-15
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多