Habe gekämpft mit Javascript Schließung für eine Weile versucht, Gehirn um Funktion Bereiche wickeln, aber ich denke, sie wickeln um mich stattdessen. Ich habe auf eine Reihe von Beiträgen (Nyman's war die hilfreichste) angesehen, aber offensichtlich immer noch nicht bekommen es. Versuchen Sie, eine Schleife über die Hover-Methode in jQuery laufen. Brauchen Sie Hover-Funktionen, um ultimative Trigger mehr als eine Aktion jeder, aber wäre glücklich, um sie arbeiten mit einem einzigen Bild-Swap jeder für jetzt zu erhalten.
$(document).ready(function() {
imageSource = [];
imageSource[0] = 'images/img0.png' //load 0 position with "empty" png
imgArea = [];
for (var i=1; i<11; i++) {
(function( ){ //anonymous function for scope
imageSource[i] = 'images/img' + i + '.png';
imgArea[i] = '#areamap_Img' + i;
// running console.log here gives expected values for both
$(imgArea[i]).hover( //imgArea[i] (selector) works correctly here
function() {
$('#imgSwap').attr('src',imageSource[i]); // imageSource[i] is undefined here
},
function() {
$('#imgSwap').attr('src','images/img0.png');
});
})(); // end anonymous function and execute
}; // for loop
});
Versucht die Idee der Verwendung einer anonymen Funktion für Scoping von einem anderen jQuery Post. Scheint OK zu arbeiten, aber wirft eine undefinierte für den Array-Wert in der ersten Hover-Funktion, ich denke, weil es eine innere Funktion ist (hardcoded Bildquellen arbeiten korrekt dort).