2011-10-27 12 views
13

Desidero tenere traccia e mostrare un suggerimento quando il mouse si trova vicino a un elemento di testa della tabella. Funziona con l'evento mouseenter, ma voglio mostrare il suggerimento prima dello mouseenter, quando si avvicina. Voglio anche rimuovere il suggerimento dopo lo mouseout a una certa distanza dalla testata del tavolo.Funzione per mouse vicino a un elemento in jQuery

Questo è il mio codice.

$('thead').mouseenter(showtooltip); 
$('thead').mouseout(removetooltip); 

Come posso farlo con jQuery?

+7

Lascia la tua margini div su tutti i lati, margini e padding sono conteggiati come parte dell'oggetto, quindi se il mouse sopra il margine poi si vedrà il tooltip prima di 'effettivamente' inserisci il div. – Ryan

+1

Oppure, crea un div trasparente più grande posizionato sopra il div target e imposta i gestori di eventi su questo div invisibile. – nrabinowitz

+0

grazie ryanOptini. Voglio farlo per testa di tavolo. non per div –

risposta

26

Questo funziona. Il primo parametro può essere qualsiasi oggetto jQuery. Il secondo parametro è la vicinanza dell'oggetto, in questo caso 20px.

Demo: http://jsfiddle.net/ThinkingStiff/Lpg8x/

Script:

$('body').mousemove(function(event) { 

    if(isNear($('thead'), 20, event)) { 
     //show your tooltip here 
    } else { 
     //hide it here 
    }; 

});   

function isNear(element, distance, event) { 

    var left = element.offset().left - distance, 
     top = element.offset().top - distance, 
     right = left + element.width() + 2*distance, 
     bottom = top + element.height() + 2*distance, 
     x = event.pageX, 
     y = event.pageY; 

    return (x > left && x < right && y > top && y < bottom); 

}; 
+1

Questa soluzione sembra essere piuttosto pesante per la CPU – medonja

Problemi correlati