2010-11-26 11 views
6

Kann ich eine Variable in hover() übergeben?jquery: Übergabe von Variablen in der Funktion hover()?

Wie im folgenden Skript möchte ich nicht die gleiche Variable zweimal var target = xxx deklarieren und ich möchte diese Variable nicht global target = xxx bcos Ich habe andere Funktion mit diesem Variablennamen - Ziel.

$('.image-profile').hover(function() { 

     var target = $('.button-change-image-profile',this); 
     target.show(); 

    },function() { 

     //var target = $('.button-change-image-profile',this); 
     target.hide(); 

    }); 

Also habe ich versucht, die var wie diese },function (target) { zu passieren, natürlich ist es falsch ist, aber jede andere Methode, um diese var zu passieren?

danke.

+0

Was ist die Verwendung von Argument übergeben, um Ereignisse Art von Funktion, was auch immer Sie wollen, wird durch Ereignisse oder diese ... – kobe

Antwort

6

Die kurze Version ist nur hier zu wechseln:

$('.image-profile').hover(function() { 
    $('.button-change-image-profile',this).toggle(); 
}); 

Um es in jedem Handler (als allgemeine Lösung) zur Verfügung haben es außerhalb definieren, wenn Looping (.each() zum Beispiel verwendet wird), wie folgt aus:

$('.image-profile').each(function() { 
    var target = $('.button-change-image-profile',this); 
    $(this).hover(function() { 
     target.show(); 
    },function() { 
     target.hide(); 
    }); 
}); 
+0

Vielen Dank! Warum habe ich nicht daran gedacht! Danke für die Hilfe :-) – laukok

+0

Danke für die allgemeine Antwort! Hat mir geholfen. – Jeff

1

Definieren Sie einfach var aus der Hover-Funktion.

+0

in javaScript ist jede aus der Funktion definierte Variable eine Art von global. – slobodan

+3

Ich weiß nicht, wer dir das gesagt hat, aber das stimmt nicht. –

+0

Dies ist ein sehr schlechter Weg, um das Problem zu "lösen", und in der Tat würde hier Probleme verursachen, da es wahrscheinlich viele '.image-profile' Elemente gibt. –

1

Ich denke, jQuery bind könnte was Sie wollen.

7

Ein anderer möglicher Ansatz: Speichern von Daten in die this des Hover in/out mit jQuery .data(). Sie speichern es bei der Maus ein, Sie holen es bei der Maus aus. Dies kann eine globale var oder eine var verwendet aus Hover-Funktion, also vom Konzept her ähnlich sein kann t einigen Müll schaffen ...

$('.image-profile').hover(function() { 

    var target = $('.button-change-image-profile',this); 
    target.show(); 

    // we save the target object into the 'target' key. 
    $(this).data('target',target); 

},function() { 

    // we retrieve the target object (a jQuery object) and then hide it. 
    $(this).data('target').hide(); 

}); 

Hoffentlich ist dieser Ansatz nicht zu falsch ist ...

+0

dies löste das Problem für mich, vielen Dank! – Saturnix

+0

Arbeitete für mich entweder :) – Heihachi

Verwandte Themen