Неправильно работает метод each()
$('.button2').live('click',function(){
$('#poleGame img').each(function(){
$('#karts').append($(this));
$('#poleGame img').remove()})
randSopernik();
hodSoper();
//return false;
})
После того как я нажму кнопку , вып-ся each(), затем randSopernik(), hodUser() и опять заходит в each. Почему? |
в ф-ии hodSoper картинка появляется в блоке poleGame, после того как сыграет each. Но почему-то опять туда возвращается
|
var flagBeru = false;
$('.button2').live('click',function(){
for (i=0; i< $('#poleGame img').length; i++){
if(flagBeru){
return false;
}
$('#karts').append($('#poleGame img').eq(i));
flagBeru = true;
}
randSopernik();
hodSoper();
//return false;
})
Этот код работает, скажите, в чем ошибка в первом посте? |
А нет, я ошибся оказывается, в 4ом посте код тоже не рабочий
И возвращается не в цикл, а в live, причём в 1 случае - 1 раз во 2 - 2 в 3 - 4 в 4 - 8 в 5 - 16 и т.д. Думаю в этом есть какая-то зависимость. |
Each удачнее чем for, можно сказать в 5ом посте исправлена ошибка.
А что такое flagBeru ? Нафига он вам нужен ? вместо return False разумно для прерывания цикла использовать break. Прокатит только для цикла for, насколько я знаю. Неудобство фор в том что нумерация элементов после append будет меняться. Но эта проблема легко решается если сделать выборку до цикла и сохранить её в переменную img=$('#karts').append($('#poleGame img'); |
Цитата:
i=0;
while(i!= 9000) {
if (++i==20)
break
};
alert(i);
|
Цитата:
Я имел ввиду что each не совсем цикл, а всё таки метод. И return в callback, для each уместнее чем break. а у него return внутри for цикла был. |
Цитата:
|
Сделал вот так:
function forVzyal() {
kolvoElem = $('#poleGame img').length;
for (i=0; i< $('#poleGame img').length; i++){
$('#karts').append($('#poleGame img').eq(i));
}
}
$('.button2').click(function(){
forVzyal();
randSopernik();
hodSoper();
})
|
Вот почему у меня после ф-ии hodSoper снова выполняется forVzyal()?
|
| Часовой пояс GMT +3, время: 11:19. |