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