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

jQuery b在动画回调期间未定义,jquery,callback,jquery-animate,Jquery,Callback,Jquery Animate,我正在制作一个滑块,这是我代码的核心部分 $('#slider a').click(function () { elem.filter(this.hash).addClass("active").animate({"right":"0"}, 3000, function() { elem.filter(activeElem).removeClass("active");

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

$('#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 sayed中得到了一个错误,b是未定义的,在IE中,nodeType是null或者不是一个对象

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

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

$('#slider a').click(function () {
   $(this).addClass("active").animate({"right":"0"}, 3000, function() {
      activeElem.removeClass("active");
      activeElem = $(this);
   });
});
如果不了解如何初始化集合,我无法确定您当前在筛选检查中的错误是什么,但因为您将其存储为jQuery元素,并且.hash表示一个简单得多的解决方案……或者如果只有一个.active class元素,请执行以下操作:

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

你需要发布一些不完整的HTML&JS。或者呢?阿维纳什是对的。你需要发布更多的代码。elem是一组元素,定义在上面的某个地方吗?activeElem在哪里定义?张贴完整的代码,你可能会有更好的运气得到帮助。