Неправильно срабатывает обработчик событий
В общем не могу разобраться в чем косяк!
В общем при первом нажатии medals.click все работает отлично, при втором medals.click неправильно работает обработчик rightButtonScroll.click... срабатывает сразу несколько раз и выдает последний результат! var medals = $(".medalBlock a"); var sportsmen = [medalists.Gold, medalists.Silver, medalists.Bronse]; var num, medalNum; medals.click(function() { num = 0; if (this === medals[0] ) { medalNum = 0; } if (this === medals[1] ) { medalNum = 1; } if (this === medals[2] ) { medalNum = 2; } rotateSportsmenList(); rightButtonScroll.click(function() { if ((num+1) < sportsmen[medalNum].length) { num++; rotateSportsmenList(); } }); leftButtonScroll.click(function() { if (num > 0) { num--; rotateSportsmenList(); } }); function rotateSportsmenList(){ statusScroll.text(num+1 + " из " + sportsmen[medalNum].length); nameSportsmenBlock.html(sportsmen[medalNum][num].name); $(".sportsmenImgBlock a").css({background: "url("+sportsmen[medalNum][num].imagesURL +") no-repeat"}); sportsmenBiographyBlock.text(sportsmen[medalNum][num].biography); } }); кстати, раз уже спрашиваю, то почему-то не работает конструкция для данного когда: for (var i = 0; i < medals.length; i++) { (function(k) { medals[k].click(function(e) { }); })(i); } только давайте без мата, и без тупых советов типа "иди еще раз прочитай главу о замыканиях"! если нету желания помочь - то иди себе мимо с Богом!) |
medals.click при каждом клике добавляет клики для rightButtonScroll и прочего --- строка 36 должна быть в строке 14;
Цитата:
если нужно jquery то medals.eq(i).click или лучше через each а не через for тогда никаких замыканий ненужно |
Вот так работает. Что у тебя там не так, разбираться лень.
for (var i = 0; i < medals.length; i++) { (function(){ medals[i].onclick= (function(){ alert(this); }); }; А в первой части, не могу понять зачем тебе обработчик событий именно внутри этой большой функции. Вынеси их наружу. Да и rotateSportsmenList() тоже можно вынести. |
Цитата:
p.s. всем спасибо, что не прошли мимо!) |
Цитата:
|
Часовой пояс GMT +3, время: 16:14. |