【问题标题】:jquery remove class not working in chromejquery删除类在chrome中不起作用
【发布时间】:2012-12-04 13:24:04
【问题描述】:

此代码在 Firefox 中有效,但在 Chrome v.23 中无效。 当我在调试器中跟踪代码时,一切正常,但 Chrome 不会更改类。有什么想法吗?

$(document).scroll(function () {

    $('a.nav').each(function () {

        var divTop = $('#' + this.title).offset().top;
        var distance = divTop - $("html").scrollTop();
        if (distance > 210 && distance < 255) {

            $('a.active').removeClass('active');
            $(this).addClass('active');

        }
    });
});

【问题讨论】:

  • 但是 addClass() 和 removeClass() 在 chrome 中对我来说很好用
  • 你能重现问题并在jsfiddle.net分享代码
  • 是的,代码将成为性能问题。您可能应该考虑限制滚动。如果你找到一个匹配的活动,你应该退出每个循环。而且你不应该一直查找 html 的滚动条,在 each 之外进行。

标签: jquery google-chrome addclass scrolltop removeclass


【解决方案1】:

问题是针对滚动顶部的 $("html")。

查看这个 SO 线程:jQuery scrollTop() doesn't seem to work in Safari or Chrome (Windows)

有关您的场景实际发生的情况的详细信息,请参阅第二个答案,即尝试使用 $('body')

不过,前两种解决方案中的任何一种都应该适合您。

【讨论】:

  • 谢谢!将 $("html") 替换为 $("body,html,document") 并在 Firefox 和 Chrome 中正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多