在动画回调期间,jQuery b未定义

时间:2010-09-21 18:50:07

标签: jquery callback jquery-animate

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

$('#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);
                    });

我正在尝试从现有的可查看元素中删除“active”类,然后将“active”添加到新元素中。然而,当我运行它时,我在Firebug中得到一个错误,“b未定义”,并且在IE中“nodeType为null或不是对象”。

你能否在回调函数中设置变量?

1 个答案:

答案 0 :(得分:0)

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

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

我无法确定您在过滤器检查上的错误当前没有看到您如何初始化集合,但是因为您无论如何都将它存储为jQuery元素,并且.hash表示#ID selector以上应该是一个更简单的解决方案......或者如果只有一个.active类元素,那就这样做:

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