2010-11-06 4 views
9

J'expérimente avec jQuery. Comme j'essayais j'ai découvert que je ne peux pas utiliser l'événement hover avec .bind. Et je ne sais pas ce qui ne va pas.ne peut pas utiliser .bind() pour lier 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 
    } 
}); 
}); 

Ce qui est surprenant (au moins pour moi) est que le vol stationnaire ne fonctionne pas. Les autres "clic" et "flou" fonctionnent bien.

Également ce qui suit fonctionne sans aucun problème.

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

Peut-être que je peux utiliser le code ci-dessus. Mais ne pas savoir pourquoi est une grosse nuisance. Donc des idées?

Merci!

Répondre

36

Vous devez utiliser les mouseenter et mouseleave événements (qui utilise .hover()) directement lors de la liaison avec un objet comme celui-ci:

$(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 dans le code de l'événement jQuery ... il est tout simplement pas pris en charge Comme d'autres événements dans des endroits comme .bind(), puisque ce n'est pas un événement, c'est juste une fonction pour vous aider à lier les événements mouseenter et mouseleave.

+3

Note à moi: RTFM! – Sinan

3

Pas beaucoup de pourquoi, mais ce n'est tout simplement pas dans les spécifications. Vérifiez que doc - hover n'est pas répertorié dans les événements bindable.

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

Questions connexes