2009-08-05 5 views
3

Я использую $().each() для прокрутки некоторых элементов. Я хочу убедиться, что действие, которое следует после этого фрагмента скрипта, выполняется только после завершения each().jQuery each() и "on success"?

Пример:

$('something').each(function() { 
    // do stuff to items 
}); 

// do something to one of these items 
$('item').etc 

Это, кажется, работает в данный момент, потому что это действительно основное действие. Но иногда это терпит неудачу, и кажется, что часть each() все еще занята, в результате чего действие последующего скрипта будет перезаписано действиями each().

Итак ... это возможно? Или код ниже каждой функции() всегда выполняется после предыдущего кода. Я знаю, что, например, AJAX-вызовы имеют функцию «успеха», чтобы заставить код выполнять только при завершении родительского действия. Это необходимо/возможно здесь? Я пытался что-то вроде следующего, но это, кажется, не работает:

$('something').each(function() { 
    // do stuff to items 
}, function() { 
    // do stuff when the each() part has completed 
});

ответ

5

each не асинхронный, поэтому все, что приходит после должен выполнить после этого и не существует какой-либо поддержки для обратного вызова. Однако это будет зависеть от того, что делает ваш «делать вещи», потому что некоторые из них могут быть асинхронными - например, анимация, слайд вверх/вниз и т. Д. - и эти методы поддерживают обратные вызовы.