Неправильно работает метод 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()?
|
покажи код forVzyal(); randSopernik(); hodSoper();
код в 11ом сообщение, такого поведения не объясняет. |
function hodSoper() { lengthKartSoper=$('#kartsSoper img').length; // Длина карт собперника //for(p=0;p<lengthKartSoper; p++){ if($('#poleGame').html() == '') { //$('img').each(function(i, index){ for(i=0;i<lengthKartSoper;i++) { atribSop = $('#kartsSoper img').eq(i).attr('src'); //записываю в переменную атриб значение атрибута соурс для дальшейшего использования в регулярке regV = /\d{1,3}/; // Регудярное выражение: найти любую цифру 1 или 2хзначную var resultSop = atribSop.match(regV); //Поместим в переменную резулт это число для работы с ним в массиве resultSop=parseInt(resultSop,10); if (resultSop<kartaHoda) {kartaHoda=resultSop; countSopHod=i; } // В первом случае резултСопер по любому будет меньше чем картаХода, а в последующих находим минимальную карту среди карт противника } $('#poleGame').append($('#kartsSoper img').eq(countSopHod)); // Ходим этой минимальной картой resultOstDelSoper = kartaHoda%10; // определим масть карты, которой сходил соперник // Создадим для ф-и pokrivSop глобальные переменные var arrayPodkid = []; countPodkid=0; var flagBeru = false; function forVzyal() {//if(!flagBeru){ kolvoElem = $('#poleGame img').length; for (i=0; i< $('#poleGame img').length; i++){ $('#karts').append($('#poleGame img').eq(i)); //flagBeru = true; } } //} $('.button2').click(function(){ forVzyal(); randSopernik(); hodSoper(); //return false; }) |
В консоле ошибка: forVzyal is not defined
|
Часовой пояс GMT +3, время: 05:17. |