Dato il legame JQuery Forward Mouse Event Example è attualmente morto, ho scritto un po 'di codice jQuery per trattare un caso semplice:
- overlay div con un'immagine trasparente e nessun collegamento
- underlay div con link
Obiettivo: mantenere visibile la sovrapposizione, fare in modo che i collegamenti funzionino e che il cursore cambi quando si trova su un collegamento.
Metodo: confrontare la posizione del mouse con ciascun collegamento offset().
Non gestisco gli eventi generali del mouse, tratta solo gli eventi che mi servono ad-hoc. Quindi è davvero una soluzione alternativa al posto della soluzione migliore, che gestirà in modo astratto ogni evento del mouse, qualcosa come l'utilizzo di quickDelegate() sopra Wildcard dopo aver controllato la geometria. Inoltre mi preoccupo solo di determinati elementi di collegamento, non dell'intero DOM a più livelli.
function mouse_event_over_element(evt, elem) {
var o= elem.offset();
var w= elem.width();
var h= elem.height();
return evt.pageX >= o.left && evt.pageX <= o.left + w && evt.pageY >= o.top && evt.pageY <= o.top + h;
}
$(overlay_selector).click(function(e){
$(underlay_selector + ' a').each(function() {
if (mouse_event_over_element(e, $(this))) {
// $(this).click(); // trigger a jQuery click() handler
// quickDelegate(e, this); // not in IE8
// this.click(); // maybe not in Mozilla pre-HTML5
window.location.href= this.href;
return false;
}
});
});
$(overlay_selector).mousemove(function(e){
var newcursor= 'default';
$(underlay_selector + ' a').each(function() {
if (mouse_event_over_element(e, $(this))) {
newcursor= 'pointer';
// $(this).mouseenter(); // trigger a one-argument jQuery hover() event (no mouseleave)
return false;
}
});
$(overlay_selector).css('cursor', newcursor);
});
Utilizzando la funzione 'mouse_event_over_element()' geometria è possibile gestire altri eventi ed elementi.
Da fare: capire quali eventi del mouse attivano il suggerimento su <a title="foo">
e attivarli() oppure replicare mostrando il suggerimento. Lo stesso per la riga di stato.
..............................
Modifica 2014/09
.. ............................
user2273627 utente sggested:
Per il tooltip predefinito e lo stato-line è possibile utilizzare lo z-index css-proprietà. Controlla se il mouse si trova su un collegamento e imposta lo z-index per quel collegamento. $ (Questo) css ('z-index', '9'); Metti un altro quando il mouse non si trova su un elemento e imposta z-index su auto. Assicurati di impostare la posizione dei link sottostanti: relativa nel file css, altrimenti z-index non funzionerà.
Questa dovrebbe essere la risposta corretta. Mi imbatto in questo problema quando si utilizza un SVG sovrapposto su una tela. Niente, e voglio dire nient'altro (librerie, CSS o altro) potrebbe risolvere questo, e questo pezzo di codice sopra era l'unica cosa che funziona alla perfezione! Complimenti caro signore, grazie! –
aggiungo anche && (! Event.repeat) –
Come applicheresti questo? – jmchauv