2013-03-01 19 views
7

Voglio un DIV da mostrare e visualizzare il cursore del mouse quando l'utente passa su uno SPAN o DIV.Mostra DIV con il cursore del mouse al passaggio del mouse su

Ho fatto questa funzione ma non funziona (jquery è caricato).

function ShowHoverDiv(divid){ 

    function(e){ 
     var left = clientX + "px"; 
     var top = clientY + "px"; 
     $("#"+divid).toggle(150).css("top",top).css("left",left).css("position","fixed"); 
     return false; 
    } 


} 

<div id="divtoshow" style="display:none">test</div> 
<br><br> 
<span onmouseover="ShowHoverDIV('divtoshow')">Mouse over this</span> 
+0

è possibile utilizzare ... function ShowHoverDiv() { $ ("# divtoshow"). Toggle ('slow'); } –

risposta

17

sei praticamente lì:

<div id="divtoshow" style="position: fixed;display:none;">test</div> 
<br><br> 
<span onmouseover="hoverdiv(event,'divtoshow')" onmouseout="hoverdiv(event,'divtoshow')">Mouse over this</span> 

E per il JS :

function hoverdiv(e,divid){ 

    var left = e.clientX + "px"; 
    var top = e.clientY + "px"; 

    var div = document.getElementById(divid); 

    div.style.left = left; 
    div.style.top = top; 

    $("#"+divid).toggle(); 
    return false; 
} 
+0

Grazie per quello, quasi funziona! Il problema è che il DIV non appare al mouse, ma circa 200 px al di sotto e sempre completamente a sinistra. Perché? È il tipo "display"? – Mbrouwer88

+0

Corretto con questo codice: function hoverdiv (e, divid) { \t \t var left = e.clientX + "px"; \t \t var top = e.clientY + "px"; \t \t \t \t $ ("#" + divid) .css ('sinistra', sinistra); \t \t $ ("#" + divid) .css ('top', in alto); \t \t $ ("#" + divid) .css ('position', 'fixed'); \t \t $ ("#" + divid) .toggle(); \t \t \t \t reso falso; \t} – Mbrouwer88

+0

sì sta funzionando bene. – kapil

9

ho subito impostato in questo esempio, partendo con il codice di Dušan Radojević:

$("#spanhovering").hover(function(event) { 
    $("#divtoshow").css({top: event.clientY, left: event.clientX}).show(); 
}, function() { 
    $("#divtoshow").hide(); 
}); 

jsfiddle

+0

Grazie. Ma il problema ora è che ho una quantità dinamica di DIV da mostrare. Cosa intendo dire se creo una funzione reale per richiamare il mouseoverevent di uno SPAN o DIV, posso usare le variabili e così via per caricare contenuti specifici nel div. Mi dispiace per essere un noob. – Mbrouwer88

+1

non lo hai indicato nel tuo post iniziale, ti preghiamo di aggiornarlo e fornire un codice di ciò che hai già fatto per raggiungere il tuo obiettivo. principalmente si vuole fare qualcosa del genere: '$ ('. my_custom_td'). hover (/ * ... * /);' – Imperative

1

In realtà, preferisco di gran lunga la risposta di Imperative. Non ho privs per aggiungere un commento al suo posto, ecco il suo codice, ottimizzato per renderlo un po 'più adattabile:

$(".spanhover").hover(function(event) { 
    var divid = "#popup" + $(this).attr("id") 
    $(divid).css({top: event.clientY, left: event.clientX}).show(); 
}, function() { 
    var divid = "#popup" + $(this).attr("id") 
    $(divid).hide(); 
}); 

http://jsfiddle.net/SiCurious/syaSa/

Avrete bisogno di essere un po' intelligente con il tuo div e span id convenzioni di denominazione.

0
$('#divToShow,#span').hover(function(e){ 
var top = e.pageY+'px'; 
var left = e.pageX+'px' 
$('#divToShow').css({position:'absolute',top:top,left:left}).show(); 
}, 
function(){ 
    $('#divToShow').hide(); 
}); 
<div id="divToShow" style="display:none">test</div> 
<br/><br/> 
<span id="span" >Mouse over this</span> 

Penso che questo codice sarà utile per il tuo caso.

Problemi correlati