jQuery b не определен во время обратного вызова - PullRequest
0 голосов
/ 21 сентября 2010

Я делаю слайдер, и это основа моего кода;

$('#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 является нулем или не является объектом».

Не можете ли вы установить переменные в функции обратного вызова?

1 Ответ

0 голосов
/ 22 сентября 2010

Поскольку вы все равно храните activeElem как объект jQuery, вы можете упростить свой код и удалить проверку , вероятно, .filter(), например, так:

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

Я не могу с уверенностью сказать, что ваша ошибка в проверке фильтра в настоящее время не видя, как вы инициализируете коллекции, но так как вы все равно храните его как элемент jQuery, а .hash обозначает#ID селектор вышеупомянутое должно быть намного более простым решением ... или, если есть только один элемент класса .active, просто сделайте это:

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