0

次のコードでfunction(next)andを使用することが重要な理由を本当に知りたいです。next()なしでは、クラスを追加した後、 をクリックして 1 回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();
})

後者は実際にはこれを行うための古い方法です。nextパラメーターはjQuery1.4で導入され、複数のキューを使用する場合は、との両方の呼び出しでキュー名を繰り返す必要がなくなり.queueます.dequeue

于 2013-03-10T11:59:42.810 に答える