【问题标题】:Why use next() to add and remove a class multiple times?为什么要使用 next() 多次添加和删除一个类?
【发布时间】:2013-03-10 11:57:14
【问题描述】:

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

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

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

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

});

【问题讨论】:

  • 欢迎来到异步编程。阅读 jQuery 的 queue 和一般异步编程的工作原理。
  • 下一个必须在某处定义。
  • @HerrSerker 它是 - 它在回调的参数列表中。

标签: javascript jquery addclass next removeclass


【解决方案1】:

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

这与.next() 无关,该函数从 jQuery 集合中选择下一个同级元素。

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

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

或者您可以使用.dequeue 代替:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多