2010-04-02 5 views

Répondre

7

Vous pouvez utiliser la méthode hover de jQuery pour garder la trace:

$(...).hover(
    function() { $.data(this, 'hover', true); }, 
    function() { $.data(this, 'hover', false); } 
).data('hover', false); 

if ($(something).data('hover')) 
    //Hovered! 
+0

Cela est préférable si l'élément a des enfants car vous ne souhaitez pas déclencher trop d'événements over/out sur une pile, mais OP n'a pas spécifié JQuery. De plus, il ne fonctionne pas avec des éléments absolument positionnés et empilés les uns sur les autres - pour cela vous avez besoin d'une logique plus sophistiquée. – Plynx

+0

@Plynx: Oui, mais l'approche de jQuery est de loin la plus facile. – SLaks

+0

Cela semble être une bonne solution, mais j'ai du mal à accéder aux données d'autres fonctions. . $ ("Div.menu") vol stationnaire ( \t function() { \t \t .data $ (ce 'vol stationnaire', true); \t \t alerte ($ ("div # menu1") des données (». vol stationnaire ')); // Debug \t}, \t function() { \t \t .data $ (ce 'vol stationnaire', false); \t \t alerte ($ ("div # menu1") des données (. 'hover')); // Déboguer \t} ); L'alerte de débogage fonctionne bien ici, mais si je le fais en dehors de ce bloc de code, cela a tendance à gâcher et à produire 'null'. Une idée pourquoi? – Pieter

3

Oui, JS classique:

document.getElementById("mylink").onmouseover = function() { alert("Hover!"); } 
document.getElementById("mylink").onmouseout = function() { alert("Out!"); } 

jQuery:

$('#mylink').mouseover(function() { 
    alert("Hover!"); 
}); 
+0

Ceci ne fonctionnera pas correctement si l'élément a des enfants. – SLaks

+2

@Slaks vrai, votre approche jQuery est meilleure. –

+0

$ ('a # mylink') serait la meilleure pratique. – dmanexe

1

Je ne sais pas si ce serait la meilleure façon de le faire, mais si vous utilisez jquery , vous pourriez faire quelque chose comme ceci:

var hoveringOver = false; 

$("a#myLink").bind("mouseenter", function(){ 
hoveringOver = true; 
}); 

$("a#myLink").bind("mouseleave", function(){ 
hoveringOver = false; 
}); 

function isHoveringOver(){ 
return hoveringOver; 
} 
+2

Cela ne fonctionnera pas correctement si l'élément a des enfants. Vous devez gérer 'mouseenter' et' mouseleave'. – SLaks

+0

@ SLaks, merci pour la suggestion, je pense que je l'ai réparé! J'ai aussi appris quelque chose de votre réponse à la question, très cool! – Jon

+0

Cela ne fonctionnera toujours pas correctement. Vous ne devriez pas du tout manipuler 'mouseover' et' mouseout'. – SLaks

Questions connexes