为什么要使用next()多次添加和删除一个类?

0 javascript jquery addclass next removeclass

我真的想知道为什么使用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();
            });         
    }

});
Run Code Online (Sandbox Code Playgroud)

Aln*_*tak 5

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

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

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

.queue(function(next) {
    // do stuff
    ...
    next();
})
Run Code Online (Sandbox Code Playgroud)

或者你可以使用.dequeue:

.queue(function() {  // NB: no parameter
     // do stuff
     ...
     $(this).dequeue();
})
Run Code Online (Sandbox Code Playgroud)

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