【问题标题】:jQuery b is undefined during animate callbackjQuery b 在动画回调期间未定义
【发布时间】:2010-09-21 18:50:07
【问题描述】:

我正在制作一个滑块,这是我的代码的核心;

$('#slider a').click(function () {
                elem.filter(this.hash).addClass("active").animate({"right":"0"}, 3000, 
                    function() {
                        elem.filter(activeElem).removeClass("active");
                        activeElem = elem.filter(this.hash);
                    });

我正在尝试从现有的可视元素中删除“活动”类,然后将“活动”添加到新元素。然而,当我运行它时,我在 Firebug 中收到一个错误,说“b 未定义”,在 IE 中出现“nodeType 为空或不是对象”。

不能在回调函数中设置变量吗?

【问题讨论】:

  • 您需要发布一些 HTML 和 JS(不完整)。 jsbin.comjsfiddle.com 怎么样??
  • 阿维纳什是对的。您需要发布更多代码。 elem 是在上面某处定义的一组元素吗? activeElem 在哪里定义?发布完整代码,您可能会更幸运地获得帮助。

标签: jquery callback jquery-animate


【解决方案1】:

由于您将 activeElem 存储为 jQuery 对象,您可以简化代码并删除 可能 有问题的 .filter() 检查,如下所示:

$('#slider a').click(function () {
   $(this).addClass("active").animate({"right":"0"}, 3000, function() {
      activeElem.removeClass("active");
      activeElem = $(this);
   });
});

如果没有看到您是如何初始化集合的,我无法确定您当前在过滤器检查中的错误是什么,但由于您将其存储为 jQuery 元素,并且.hash 表示@987654322 @ 上面应该是一个更简单的解决方案......或者如果只有一个 .active 类元素,只需这样做:

$('#slider a').click(function () {
   $(this).addClass("active").animate({"right":"0"}, 3000, function() {
      $(".active").not(this).removeClass("active");
   });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2020-10-18
    相关资源
    最近更新 更多