Вход

Просмотр полной версии : Callback у $.each()


shilinpavel
22.07.2012, 20:19
Подскажите как, к примеру, выполнить alert('done') после того как $.each() закончит перебор массива?

Deff
22.07.2012, 20:21
$.each() {
//Тут что- то
alert('done')
}

cmd
22.07.2012, 20:32
А разве так не пойдет?

$.each() {
//Тут что- то
}
alert('done');

Deff
22.07.2012, 20:40
cmd,
Ксать да - я не прав - поспешил

shilinpavel
22.07.2012, 23:57
А разве так не пойдет?

$.each() {
//Тут что- то
}
alert('done');




тогда each выполняется параллельно с alert()

Deff
22.07.2012, 23:59
shilinpavel,
:blink: Это если ток у Вас ява-скрипт параллельный процессор - тады да
*У Вас скольки ядерный ?
Если перебор массива с анимацией - вставляете allert в последний анимационный сallback
Выложите Ваш код для $.each() {

shilinpavel
23.07.2012, 00:44
<div id="one"></div>

array = ['1','2','3','4'];
$.each(array,(function(i)
{
$('#one').append('<p>'+this[i]+'</p>')
})

После выполнения нужно вывести $('#one').height(), у меня она всегда равна нулю, если вывожу через setTimeout, то все ок

devote
23.07.2012, 00:58
не знаю, у меня норм выводит число 124
<div id="one"></div>
<script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
<script>
var array = ['1','2','3','4'];
$.each(array, function(i) {
$('#one').append('<p>'+this+'</p>')
});
alert($('#one').height()); // 124
</script> воможно у вас элемент #one скрыт, где то в стилях.

cmd
23.07.2012, 01:05
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
alert('start!');
var myarray = ['0','1','2','3'];
$.each(myarray, function(i) {
alert(i);
});
alert('done');
</script>
</body>
</html>

Жмякните "Запустить". Если у Вас в цикле нет анимации или ajax, то callback не к чему.

shilinpavel
23.07.2012, 01:07
вроде не скрыт, может у меня что то с библиотекой, она у меня ошибку выдает когда в crome открыт bug

shilinpavel
23.07.2012, 01:08
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
alert('start!');
var myarray = ['0','1','2','3'];
$.each(myarray, function(i) {
alert(i);
});
alert('done');
</script>
</body>
</html>

Жмякните "Запустить". Если у Вас в цикле нет анимации или ajax, то callback не к чему.
я из ajax беру массив с данными, который потом прокручиваю в each

Deff
23.07.2012, 01:11
я из ajax беру массив с данными,
Аякс внутри .each или - вне ?

devote
23.07.2012, 01:11
я из ajax беру массив с данными, который потом прокручиваю в each
да какая разница откуда данные... это дело не меняет.. после итерации each должна быть возможность получить нужные значения, в том случае если элемент у которого нужно выяснить значения не скрыт.. если он все же скрыт, то вы и будете всегда получать значение ноль.

shilinpavel
23.07.2012, 01:13
Аякс внутри .each или - вне ?
снаружи

shilinpavel
23.07.2012, 01:14
да какая разница откуда данные... это дело не меняет.. после итерации each должна быть возможность получить нужные значения, в том случае если элемент у которого нужно выяснить значения не скрыт.. если он все же скрыт, то вы и будете всегда получать значение ноль.
не скрыт он, это 100% процентов

Deff
23.07.2012, 01:15
shilinpavel,
Вы запускаете .each из саllback Аякса или ?

Каким оператором в Аяксе пользуетесь ?

Дайте ссылку на демо страницу