Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2009, 22:31
oxymo
 
Сообщений: n/a

Функция eq(i).mouseover(function(){...}) не реагирует на изменение i...
Всем доброго времени суток.
Пишу скрипт галерейки и столкнулся с проблемой.
HTML код галереи выглядит следующим образом:
<div class="imgs_block_big">
            <div id="1" class="img_item"></div>
            <div id="2" class="img_item"></div>
            <div id="3" class="img_item"></div>
            <div id="4" class="img_item"></div>
            <div id="5" class="img_item"></div>
            <div id="6" class="img_item"></div>
        </div>

С соответствующими стилями и форматированием. Всё это дело оживляется следующим кодом:
imgarr = ["../../images/test_big0.jpg",
                              "../../images/test_big1.jpg",
                              "../../images/test_big0.jpg",
                              "../../images/test_big1.jpg",
                              "../../images/test_big0.jpg",
                              "../../images/test_big1.jpg"];
            var param = {
                first : 1,
                last  : 6,
                curnt : 3
            };
            function Start()
              {
              //отображает первоначальные 3 элемента: центральную картинку и 2 "кнопки"
              }
            $(document).load(function(){
                Start();
            });
            $(document).ready(function(){
                
                $("div.img_item").eq(param.curnt).mouseover(function(){
                    $("div.img_item").eq(param.curnt).animate({"left": "-=20px"}, "fast");
                });
                $("div.img_item").eq(param.curnt).mouseout(function(){
                    $("div.img_item").eq(param.curnt).animate({"left": "+=20px"}, "fast");
                });
                $("div.img_item").eq(param.curnt-2).mouseover(function(){
                    $("div.img_item").eq(param.curnt-2).animate({"left": "+=20px"}, "fast");
                });
                $("div.img_item").eq(param.curnt-2).mouseout(function(){
                    $("div.img_item").eq(param.curnt-2).animate({"left": "-=20px"}, "fast");
                });
                $("div.img_item").eq(param.curnt).click(function(){
                    var w_Gal = document.documentElement.clientWidth > 1020 ? document.documentElement.clientWidth : 1020;
                    var betw_space = (w_Gal/2-150)+240;
                    $("div.img_item").eq(param.curnt).css("left", (w_Gal-60)+"px");
                    if ((param.curnt) != param.last) {
                        $("div.img_item").eq(param.curnt+1).css("left", (w_Gal+betw_space-80)+"px");
                        $("div.img_item").eq(param.curnt+1).css("background-image", "url('"+imgarr[param.curnt+1]+"')");
                        $("div.img_item").eq(param.curnt+1).css("visibility", "visible");
                    }
                    for (var i = param.curnt-2; i <= param.curnt+1; i++)
                        {
                        $("div.img_item").eq(i).animate({"left": "-="+betw_space+"px"}, "slow");
                        }
                    $("div.img_item").eq(param.curnt-2).css("visibility", "hidden");
                    param.curnt++;
                });
                $("div.img_item").eq(cur_img-2).click(function(){
                    var w_Gal = document.documentElement.clientWidth > 1020 ? document.documentElement.clientWidth : 1020;
                    var betw_space = (w_Gal/2-150)+240;
                    $("div.img_item").eq(cur_img-2).css("left", "-240px");
                    if ((param.curnt-2) != param.first) {
                        $("div.img_item").eq(param.curnt-3).css("left", (-240-betw_space)+"px");
                        $("div.img_item").eq(param.curnt-3).css("background-image", "url('"+imgarr[param.curnt-3]+"')");
                        $("div.img_item").eq(param.curnt-3).css("visibility", "visible");
                    }
                    for (var i = param.curnt-3; i <= param.curnt; i++)
                        {
                        $("div.img_item").eq(i).animate({"left": "+="+betw_space+"px"}, "slow");
                        }
                    $("div.img_item").eq(param.curnt).css("visibility", "hidden");
                    cur_img--;
                });
            });

Поначалу всё работает нормально, но как только пролистываем галерею на одно изображение вправо или влево, то обработка событий ...mouseover(function(){...}); и ...mouseout(function(){...}); остаётся привязанной к тем же двум дивам, что и в начале (для первого изображения), а вот тела этих функций работают нормально (то есть анимируется нужный элемент).
Подскажите, как вызывать обработчик, чтобы можно было динамически переназначать элементы, к которым он относится?
Уже второй день с этим мучаюсь не могу ответ найти=(
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера окна браузера pv! Общие вопросы Javascript 10 29.09.2019 08:45
изменение текущего контекста функции vkovalev jQuery 13 16.03.2009 12:52
Функция movelayer () kotjke Общие вопросы Javascript 5 24.02.2009 17:44
изменение переменной Ilja_ORDY Общие вопросы Javascript 3 09.09.2008 18:56
Динамическое изменение <input text> baal1988 Events/DOM/Window 4 24.08.2008 17:17