Цель
Я хочу динамически назначать обработчики событий некоторым div на страницах по всему сайту.
Мой метод
Im использует jQuery для привязки анонимных функций как обработчиков для выбранных событий div.
Проблема
Итерирует массив имен div и связанных URL. Имя div используется для установки целевого объекта привязки, т.е. присоединяет этот обработчик события к этому событию div.
В то время как обработчики событий успешно связаны с каждым из Див событий, действия, спровоцированные этими обработчики событий только когда-либо целевой последний элемент в массиве.
Итак, идея состоит в том, что если пользователь переводит мышью по данному div, он должен запустить анимацию скольжения для этого div. Но вместо этого mousing над div1 (rangeTabAll) запускает анимацию скольжения для div4 (rangeTabThm). То же самое верно для divs 2, 3 и т.д. Порядок неважен. Измените элементы массива вокруг, и события всегда будут нацелены на последний элемент в массиве div4.
Мой код - (использует jQuery)
var curTab, curDiv;
var inlineRangeNavUrls=[['rangeTabAll','range_all.html'],['rangeTabRem','range_remedial.html'],
['rangeTabGym','range_gym.html'],['rangeTabThm','range_thermal.html']];
for (var i=0;i<inlineRangeNavUrls.length;i++)
{
curTab=(inlineRangeNavUrls[i][0]).toString();
curDiv='#' + curTab;
if ($(curDiv).length)
{
$(curDiv).bind("mouseover", function(){showHideRangeSlidingTabs(curTab, true);} );
$(curDiv).bind("mouseout", function(){showHideRangeSlidingTabs(curTab, false);} );
}
}
Моя теория
Я либо не вижу ослепительно очевидной синтаксической ошибки, либо проблемы с отправкой по ссылке. Первоначально у меня была следующая инструкция для установки значения curTab:
curTab=inlineRangeNavUrls[i][0];
Итак, когда возникла проблема я понял, что, как я изменил (через для итерации цикла) ссылки на curTab, я был на самом деле изменением ссылки для всех предыдущих обработчиков событий анонимной функции к новому значению curTab а.... поэтому обработчики событий всегда нацелены на последний div.
Так что мне действительно нужно было передать значение curTab для обработчиков событий анонимных функций, а не для ссылки на объект curTab.
Итак, я подумал:
curTab=(inlineRangeNavUrls[i][0]).toString();
устранит проблему, но это не так. Такая же сделка. Таким образом, очевидно, что я пропустил некоторые ключевые и, возможно, очень простые знания о проблеме. Спасибо.