0

我真的很想知道为什么在下面的代码function(next)中使用它很重要。next()如果没有next(),您只能.open-sidebar在添加该类后通过单击 删除一次.header__menu__button--profile

我以为next()是用来选择元素的以下同级的!

为什么.open-sidebar每次单击时都需要它来删除类.sidebar__top__button--close

$('.header').on('click','.header__menu__button--profile',function(){
    $('.sidebar').addClass('open-sidebar');
});

$('.sidebar').on('click','.sidebar__top__button--close',function() {

    if($('.sidebar').hasClass('open-sidebar'))
    {
        $('.sidebar').delay(300).queue(function(next){
            $('.sidebar').removeClass('open-sidebar');
            next();
            });         
    }

});
4

1 回答 1

5

在这种情况下,next是jQuery 传递给回调的参数,它是对动画队列中下一个函数的引用。.queue

.next()它与从 jQuery 集合中选择下一个兄弟元素的函数无关。

使用它是.queue因为一旦你完成了你需要做的任何事情,你就必须告诉 jQuery 处理剩余的动画队列,即:

.queue(function(next) {
    // do stuff
    ...
    next();
})

或者您可以.dequeue改用:

.queue(function() {  // NB: no parameter
     // do stuff
     ...
     $(this).dequeue();
})

后者实际上是执行此操作的较旧方式 - 该参数是在 jQuery 1.4 中引入的,如果使用多个队列可以避免在和调用next中重复队列名称的需要。.queue.dequeue

于 2013-03-10T11:59:42.810 回答