jQuery: связывание функций, которые сами вызывают? - PullRequest
0 голосов
/ 27 октября 2010

У меня есть функция javascript, которая вызывает себя при обратном вызове, и мне интересно, как связать другие функции после все обратные вызовы завершены? Возможно, лучше всего объяснить с помощью кода:

$(document).ready(function() {
    sequentialFadeIn($('#demolist li'));
});

function sequentialFadeIn(item) {
    item.eq(0).fadeIn("fast", function() {
        (item=item.slice(1)).length && sequentialFadeIn(item)
    }
}

Таким образом, функция sequentialFadeIn выполняет итерацию всех элементов списка в «demolist» и выводит их один за другим. Что я хотел бы сделать, это выполнить другую функцию (назовем ее «sequentialMoveUp») после того, как все итерации sequentialFadeIn были выполнены. Я немного новичок в jQuery, поэтому этот вопрос может быть чем-то вроде «как связать не jQuery-методы в jQuery» или «как выполнить обратные вызовы для не-jquery-методов в jQuery» ... или, опять же, может не , Любые идеи наиболее ценны.

1 Ответ

1 голос
/ 27 октября 2010

Вам нужен последний обратный вызов , переданный sequentialFadeIn. Следующим шагом является добавление дополнительного регистра в вашу условную логику для случая, когда ничего не осталось. Затем вы вызываете последний обратный вызов . [ Демо ]

Код

function sequentialFadeIn(items, callback) {
    items.eq(0).fadeIn("fast", function() {
       items = items.slice(1);
       if (items.length) // items left
         sequentialFadeIn(items, callback);
       else              // no items left -> finished
         callback();
    });
}

Использование

sequentialFadeIn($('#demolist li'), sequentialMoveUp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...