2013-03-01 39 views
7

Tôi muốn DIV hiện ra và xuất hiện tại con trỏ chuột khi người dùng di chuột qua SPAN hoặc DIV.Hiển thị DIV tại con trỏ chuột khi di chuột qua khoảng

Tôi đã thực hiện chức năng này nhưng không hoạt động (jquery được tải).

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

bạn có thể sử dụng ... chức năng ShowHoverDiv() { $ ("# divtoshow"). Toggle ('slow'); } –

Trả lời

17

Bạn đang khá nhiều đó:

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

Và đối vớ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

Cảm ơn vì điều đó, tôi gần như hoạt động! Vấn đề là DIV không xuất hiện ở chuột, nhưng khoảng 200px bên dưới nó và luôn hoàn toàn ở bên trái. Tại sao vậy? Có phải loại "hiển thị" không? – Mbrouwer88

+0

Sửa lỗi với mã này: chức năng hoverdiv (e, divid) { \t \t var left = e.clientX + "px"; \t \t var top = e.clientY + "px"; \t \t \t \t $ ("#" + chia) .css ('left', left); \t \t $ ("#" + chia) .css ('trên cùng', trên cùng); \t \t $ ("#" + chia) .css ('position', 'fixed'); \t \t $ ("#" + chia) .toggle(); \t \t \t \t trả về false; \t} – Mbrouwer88

+0

yup nó hoạt động tốt. – kapil

9

tôi nhanh chóng thiết lập ví dụ này, bắt đầu với mã Dušan Radojević:

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

jsfiddle

+0

Cảm ơn. Nhưng vấn đề bây giờ là tôi có một số lượng năng động của DIV để hiển thị. Những gì tôi có nghĩa là để nói rằng nếu tôi tạo ra một chức năng thực sự để gọi trên mouseoverevent của một SPAN hoặc DIV, tôi có thể sử dụng các biến và như vậy để tải nội dung cụ thể trong div. Xin lỗi vì là một noob. – Mbrouwer88

+1

bạn đã không chỉ ra điều này trong bài viết đầu tiên của bạn, xin vui lòng cập nhật nó và cung cấp một số mã của những gì bạn đã làm để đạt được mục tiêu của bạn. chủ yếu là bạn muốn làm một cái gì đó như thế này: '$ ('. my_custom_td'). hover (/ * ... * /);' – Imperative

1

Thực ra, tôi thích câu trả lời của Imperative hơn. Tôi không có privs để thêm một bình luận cho bài của mình, vì vậy đây là mã của mình, tinh chỉnh để làm cho nó một chút dễ thích nghi hơn:

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

Bạn sẽ cần phải có một chút khéo léo với bạn quy ước đặt tên div và span id.

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> 

Tôi nghĩ mã này sẽ hữu ích cho trường hợp của bạn.

Các vấn đề liên quan