2011-06-13 6 views
3

Espérons que cette jsFiddle devrait illustrer la question mieux que mes paroles:annulation événement mouseout lorsque l'élément est recouvert

http://jsfiddle.net/pmwRc/6/

J'affichons un H4 absolument positionné comme une étiquette sur une carte d'image lorsque la carte est plané. Cependant, lorsque le pointeur de la souris est déplacé sur le H4, la carte d'image déclenche un "mouseout", ce qui provoque la dissimulation du H4.

Comment puis-je empêcher cela? Je veux que l'étiquette soit visible lorsque la souris est au-dessus de la carte-image, qu'elle soit aussi sur l'étiquette.

Répondre

1

Vous pourriez «tricher» en utilisant une image/couche transparente (en utilisant votre carte) qui est placée au-dessus de votre image.

http://jsfiddle.net/GRPQa/7/

Il fonctionne en utilisant la carte coordonnées de l'image.

+0

Cela semble être la meilleure solution. Thanks :) – Wintermute

+0

Voulez-vous accepter cette réponse? : P – Colin

+0

excuses - n00b ici :) – Wintermute

0
function doSomething(e) { 
    if (!e) var e = window.event; 
    var tg = (window.event) ? e.srcElement : e.target; 
    if (tg.nodeName != 'DIV') return; 
    var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement; 
    while (reltg != tg && reltg.nodeName != 'BODY') 
     reltg= reltg.parentNode 
    if (reltg== tg) return; 
    // Mouseout took place when mouse actually left layer 
    // Handle event 
} 

Voir http://www.quirksmode.org/js/events_mouse.html

1

Je sais qu'il est pas exactement la même chose, mais j'ai modifié votre violon et a obtenu une alternative de travail, juste sans la carte d'image;) (vol stationnaire au milieu de « G » et premier 'o')

http://jsfiddle.net/pmwRc/31/

Vous pouvez utiliser l'attribut de style pour définir les coordonnées dans le balisage pur si nécessaire:

http://jsfiddle.net/pmwRc/33/

+0

C'est une bien meilleure façon de le faire, acclame. Le problème est, il repose sur l'étiquette h4 étant au-dessus de la zone de vol stationnaire cible; quelque chose que j'aurais dû mentionner n'est pas toujours le cas. Parfois, l'étiquette est à côté de la zone de vol stationnaire, parfois plusieurs zones de vol stationnaire sont «groupées» - en planant, il faut afficher les étiquettes sur toutes les zones de ce groupe. Mais merci pour l'aide :) – Wintermute

Questions connexes