Неправильно работает метод 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, время: 12:03. |