CelemJak przekazać zmienną po wartości do anonimowej funkcji javascript?
Chcę dynamicznie przypisać obsługi zdarzeń do niektórych DIV na stronach w całej witrynie.
moja metoda
Im jQuery związać anonimowych funkcje jak ładowarki do wybranych zdarzeń DIV.
Problem
Kod iteracje tablicę dz opisów i powiązanych adresów URL. Nazwa div służy do ustawienia celu wiązania, tj. Dołączenia tej procedury obsługi zdarzeń do tego zdarzenia div.
Chociaż programy obsługi zdarzeń są z powodzeniem powiązane z każdym z zdarzeń div, akcje wywoływane przez te procedury obsługi zdarzeń są kierowane tylko na ostatni element w tablicy.
Chodzi o to, że jeśli użytkownik myszkuje nad danym elementem div, powinien uruchomić animację wysuwaną dla tego elementu div. Zamiast tego, mousing nad div1 (rangeTabAll) wyzwala wysunięcie animacji dla div4 (rangeTabThm). To samo dotyczy div 2, 3 itd. Kolejność nie ma znaczenia. Zmień elementy tablicy, a zdarzenia będą zawsze kierowane na ostatni element tablicy div4.
mojego kodu - (Używa 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);});
}
}
moja teoria
Ja też nie widząc oślepiająco oczywisty błąd składni lub jej przepustkę od problemu odniesienia. Początkowo miałem następującą instrukcję, aby ustawić wartość curTab:
curTab=inlineRangeNavUrls[i][0];
Więc kiedy problem wystąpił Pomyślałem, że jak już zmienić (za pośrednictwem pętli iteracji) odniesienie do curTab, byłem w rzeczywistości zmieniając odwołanie do wszystkich poprzednich funkcji obsługi zdarzeń anonimowych funkcji do nowej wartości curTab, a także .... dlatego procedury obsługi zdarzeń zawsze były kierowane na ostatni element div.
Więc co tak naprawdę potrzebne do zrobienia było przekazać wartość curTab do anonimowych funkcja obsługi zdarzeń nie curTab obiekt odniesienia.
więc pomyślałem:
curTab=(inlineRangeNavUrls[i][0]).toString();
by rozwiązać ten problem, ale tak nie jest. Taki sam układ. Tak więc wyraźnie brakuje im kluczowej i prawdopodobnie bardzo podstawowej wiedzy na temat problemu. Dzięki.
JavaScript zawsze przekazuje i przypisuje wartość. Twoje pytanie w ogóle nie dotyczy przekazywania; ale raczej przechwytywanie zmiennych przez zamknięcie. – newacct