Wie übergibt man eine Variable an eine anonyme JavaScript-Funktion?

Das Ziel

Möchte ich das dynamische zuweisen von event-Handler, um einige divs auf Seiten innerhalb einer Website.

Meine Methode

Im mit jQuery zum binden von anonymen Funktionen als Handler für die ausgewählten div-Ereignisse.

Das Problem

Den code durchläuft eine Reihe von div-Namen und die zugehörigen urls. Die div-name wird verwendet, um das verbindliche Ziel-also bringen Sie diese Ereignishandler, um das div-event.

Während der event-Handler sind erfolgreich gebunden, um alle div-Ereignisse, die von Aktionen ausgelöst, die durch diese Ereignis-Handler immer nur den Gegner das Letzte Element im array.

Also die Idee ist, dass, wenn der Benutzer die Maus über einem bestimmten div, es sollte eine slide-out-animation für das div. Aber stattdessen fährt man mit der Maus über div1 (rangeTabAll) löst eine slide-out-animation für div4 (rangeTabThm). Das gleiche gilt für divs 2, 3 usw. Die Reihenfolge ist unwichtig. Ändern der array-Elemente um und Ereignisse werden immer den Gegner das Letzte element im array, div4.

Mein Code (jQuery Verwendet)

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);} );
            }
        }

Meine Theorie

Bin ich entweder nicht zu sehen, ein offensichtlichen syntax-Fehler oder seine eine referenzübergabe problem.
Zunächst hatte ich die folgende Anweisung, um den Wert curTab:

curTab=inlineRangeNavUrls[i][0];

Also, wenn das problem auftrat, dachte ich, als ich geändert (via for-Schleife, iteration) der Verweis auf die curTab, ich war in der Tat ändern die Referenz für alle vorherigen anonyme Funktion, event-Handler, um die neue curTab Wert.... das ist der Grund, warum event-Handler immer gezielt das Letzte div.

Also, was ich wirklich tun musste, um passieren die curTab Wert der anonymen Funktion event-Handler nicht die curTab Objekt Referenz.

Also dachte ich:

curTab=(inlineRangeNavUrls[i][0]).toString();

das problem beheben würde, aber es funktioniert nicht. Gleiche deal. So deutlich im fehlen einige Schlüssel, und wahrscheinlich sehr grundlegenden, das wissen über das problem. Danke.

InformationsquelleAutor der Frage rism | 2009-07-30

Schreibe einen Kommentar