2010-06-09 16 views
7

Próbuję usunąć atrybut title dla linku po najechaniu kursorem, a następnie dodać go z powrotem na myszy. Chciałbym przekazać var ​​hoverText do aktywacji ...jquery hover przekazać zmienną do funkcji wywołania zwrotnego

Oto kod, który mam. Jakieś pomysły?

$(".icon a").hover(function() { 
    $this = $(this); 
    var hoverText = $.data(this, 'title', $this.attr('title'));        
    $(this).find("em").animate({opacity: "show", top: "-35"}, "slow"); 
    $(this).find("em").text(hoverText);  

    $this.removeAttr('title');  


}, function(hoverText) {    

    $(this).find("em").animate({opacity: "hide", top: "-45"}, "fast");  
    $(this).attr("title", hoverText); 

}); 

Odpowiedz

1

Umieść "hoverText" jako zmienną globalną.

+1

to działa, ale chcę trzymać się z dala od zmiennych globalnych żadnych myśli? –

+2

To przerażające, straszne rozwiązanie ... Przypisując, że zmienna ta na pewno nie pozostanie taka sama. –

6
$(".icon a").hover(function() { 
    $this = $(this); 
    $.data(this, 'title', $this.attr('title'));        
    $(this).find("em").animate({opacity: "show", top: "-35"}, "slow"); 
    $(this).find("em").text(hoverText);  

    $this.removeAttr('title');  


}, function(hoverText) {    

    $(this).find("em").animate({opacity: "hide", top: "-45"}, "fast");  
    $(this).attr("title", $.data(this, 'title'); 

}); 

Sztuką jest:

$.data(this, 'title'); 

Podczas korzystania z danych, jesteś skutecznie przechowywania zmienną na tym elemencie Dom na wyraźnym celu właśnie opisanego. Możesz także rozwiązać problem, deklarując wartość zmiennej $ this nad początkową funkcją kursora, rozszerzając zakres, aby objąć oba.

+0

to jest to, co starałem się dowiedzieć, jak zadeklarować powyżej? jakieś pomysły? –

+0

Dokładnie tego, czego szukałem. Działa to świetnie do robienia prostych podpowiedzi. Dodaj znacznik podpowiedzi do w pierwszej funkcji, zapisz obiekt DOM w zmiennej, zapisz tę zmienną w obiekcie $ .data, uzyskaj dostęp do niej w drugiej funkcji, aby ją zanikać. – Mike

Powiązane problemy