当我将鼠标悬停在DIV中的链接上时,我需要停止DIV消失

时间:2010-08-30 11:46:19

标签: javascript jquery jquery-ui html

这是我完整的代码,当我鼠标悬停在popupcontact div上它显示divtoshow div而它有一个名称rahul的链接当我鼠标​​悬停在链接上它隐藏div名称divtoshow。 我的鼠标应该隐藏当我鼠标移除时,我鼠标悬停链接。 请尽快帮助。

问候 拉胡

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.0/jquery.min.js" type="text/javascript"></script>
</head>
<body>
    <div id="popupContact"  style="position:absolute;left:100px;top:100px;width:100px;height:50px;background-color:orange;border:1px solid red ;">
    </div>
    <div id="divtoshow" style="display:none;background-color:green; border:1px solid black;width:200px;height:100px;position:absolute;">
    dsfdssd <div><a href="#">rahul</a></div>
    </div>
</body>
</html>
<script  type='text/javascript'>
$(document).ready(function(){
    var popup_pos=$('#popupContact').offset();
    var timer;
     $("#popupContact").mouseover(function() {
        if(timer) {
            clearTimeout(timer);
            timer = null
           }
        timer = setTimeout(function() {
            console.log($("#VersionSelectField").is(':hidden'));
            if(!$("#VersionSelectField").is(':hidden')){
                $("#divtoshow").css('position',"absolute"); 
                $("#divtoshow").css('top',popup_pos.top-20);    
                $("#divtoshow").css('left',popup_pos.left-20);  
                $("#divtoshow").fadeIn(300);
                 $("#popupContact").hide();
            }

        }, 100);

        });

     $("#divtoshow").mouseout(function() {
            if(timer) {
                clearTimeout(timer);
                timer = null
               }
            timer = setTimeout(function() {
                $("#divtoshow").fadeOut("slow");
                 $("#popupContact").show();

            }, 1000);
    });
});
</script>

2 个答案:

答案 0 :(得分:1)

而不是.mouseout()这样:

$("#divtoshow").mouseout(function() {

使用.mouseleave(),如下所示:

$("#divtoshow").mouseleave(function() {

当输入像mouseout这样的子元素时,将不会触发,当你不想要它时,它会隐藏。


另外一个代码提示,您至少可以在#divtoshow选择器上链接,甚至更好地链接并将对象传递给.css(),如下所示:

$("#divtoshow").css({ position: "absolute", 
                      top: popup_pos.top-20, 
                      left: popup_pos.left-20 })
               .fadeIn(300);

此外,这对您的标记来说不是问题,但如果#popupContact有一个子元素,那么mouseover就会遇到类似的问题,那就是{000}等同于{000} }}

答案 1 :(得分:0)

使用setTimeout和clearTimeout时,请务必通过调用window.setTimeout和window.clearTimeout来使用这些函数的完整路径。

我发现,如果你不这样做,有时它会在IE的某些版本中无法正常工作。