2010-11-06 17 views
9

Eksperymentuję z jQuery. Podczas próby dowiedziałem się, że nie mogę użyć zdarzenia hover z .bind. I nie wiem, co jest nie tak.nie można użyć .bind() do wiązania hover

$(document).ready(function(){ 
$('.some-class').bind({ 
    hover: function(e) { 
    // Hover event handler 
    alert("hover"); 
    }, 
    click: function(e) { 
    // Click event handler 
    alert("click"); 
    }, 
    blur: function(e) { 
    // Blur event handler 
    } 
}); 
}); 

Co jest zaskakujące (przynajmniej dla mnie) to, że hover nie działa. Pozostałe "kliknij" i "rozmycie" działają poprawnie.

Także następujące prace bez żadnych problemów.

$(".some-class").hover(function(){ 
    // stuff 
}) 

Może mogę użyć powyższego kodu. Ale nie wiedząc, dlaczego jest to duża uciążliwość. Jakieś pomysły?

Dzięki!

Odpowiedz

36

trzeba użyć zdarzenia mouseenter i mouseleave (co .hover() używa) bezpośrednio podczas wiązania z obiektu jak poniżej:

$(document).ready(function(){ 
$('.some-class').bind({ 
    mouseenter: function(e) { 
    // Hover event handler 
    alert("hover"); 
    }, 
    mouseleave: function(e) { 
    // Hover event handler 
    alert("hover"); 
    }, 
    click: function(e) { 
    // Click event handler 
    alert("click"); 
    }, 
    blur: function(e) { 
    // Blur event handler 
    } 
}); 
}); 

.hover()is defined specially here w kodzie zdarzenia jQuery ... to po prostu nie jest obsługiwany podobnie jak inne wydarzenia w miejscach takich jak .bind(), ponieważ nie jest to wydarzenie, jest to tylko funkcja ułatwiająca powiązanie zdarzeń mouseenter i mouseleave.

+3

Uwaga dla siebie: RTFM! – Sinan

3

Nie wiele z tego, dlaczego, ale po prostu nie jest w specyfikacji. Sprawdź, czy dokowanie - nie znajduje się na liście zdarzeń powiązania.

http://api.jquery.com/bind/

Powiązane problemy