2013-03-01 7 views
7

Chcę, aby DIV odkrył i pojawi się na kursie myszy, gdy użytkownik unosi się nad SPANEM lub DIV.Pokaż DIV na kursie myszy na zawisie o zakresie

Zrobiłem tę funkcję, ale to nie działa (jquery jest ładowany).

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

możesz użyć ... funkcja ShowHoverDiv() { $ ("# divtoshow") .ggle ("slow"); } –

Odpowiedz

17

Jesteś dość dużo tam:

<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> 

I 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

Dziękuję za to, prawie działa! Problem polega na tym, że DIV nie pojawia się u myszy, ale około 200 pikseli poniżej i zawsze całkowicie po lewej stronie. Dlaczego? Czy jest to typ "wyświetlania"? – Mbrouwer88

+0

Naprawiono to przy pomocy tego kodu: funkcja hoverdiv (e, divid) { \t \t var left = e.clientX + "px"; \t \t var top = e.clientY + "px"; \t \t \t \t $ ("#" + divid) .css ("left", left); \t $ ("#" + dzielone) .css ("top", u góry); \t \t $ ("#" + divid) .css ("position", "fixed"); \t \t $ ("#" + dzielnik) .toggle(); \t \t \t \t return false; \t} – Mbrouwer88

+0

tak działa poprawnie. – kapil

9

i szybko skonfigurować ten przykład, wychodząc z kodem Dušan Radojević:

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

jsfiddle

+0

Dzięki. Ale problem polega na tym, że mam dynamiczną ilość DIV do pokazania. Co mam na myśli, jeśli utworzyć rzeczywistą funkcję, aby wywołać mouseoverevent z SPAN lub DIV, mogę używać zmiennych i tak dalej, aby załadować określoną zawartość w div. Przepraszam, że jestem noobem. – Mbrouwer88

+1

nie wskazałeś tego w swoim początkowym wpisie, zaktualizuj go i podaj kod, który już zrobiłeś, aby osiągnąć swój cel. głównie chcesz zrobić coś takiego: '$ ('. my_custom_td'). hover (/ * ... * /);' – Imperative

1

Właściwie wolę odpowiedź Imperative. Nie mam privs aby dodać komentarz do swojego postu, więc tutaj jest jego kod, manipulowane, aby uczynić go nieco bardziej elastyczne:

$(".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/

Musisz być nieco mądry z telefonem Konwencje nazewnictwa id i div.

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> 

Myślę, że ten kod będzie przydatny w Twoim przypadku.