如何在鼠标悬停时显示/隐藏div?

时间:2012-08-07 09:26:45

标签: javascript jquery

  

可能重复:
  How to show/hide a div on mouseover using jquery?

我有这样的div:

<div id="parent">
     foo
      <div id="child" style="display:none;">
         hidden
       </div>
</div>

我希望每当有人将鼠标移到child div上时显示parent div,当他移开鼠标时,隐藏父div。

但是,如果我这样做:

$("#parent").mouseover(toggle);
$("#parent").mouseout(toggle);
function toggle()
{
   console.log('here');
   $("#child").toggle();
}

然后,每当我将鼠标移到#parent div上时,两个事件似乎都会被调用两次。我怎样才能实现我的目标?

8 个答案:

答案 0 :(得分:6)

$("#parent").hover(
   function(){
      $("#child").show();

   },
   function(){
      $("#child").hide();
   }
)

答案 1 :(得分:3)

如何添加css?

#parent #child {display:none;}

#parent:hover #child {display:block;}

 <div id="parent">
         foo
          <div id="child" >
             hidden
           </div>
    </div>

答案 2 :(得分:1)

在这种情况下,您不应该使用切换。如果您总是希望在鼠标悬停时隐藏并在鼠标悬停时显示,则将其定义为:)

$("#parent").mouseover(function() {
    $("#child").fadeIn(); // or .show() for no fading
});

$("#parent").mouseout(function() {
    $("#child").fadeOut(); // or .hide() for no fading
});

答案 3 :(得分:1)

不要使用切换功能!!

尝试这样的事情:

$("#parent").hover(function(){
  $("#child").show();
}, function(){
  $("#child").hide();

} )

这应该可行!!

答案 4 :(得分:1)

更短的:

$("#parent").hover(function () {
   $("#child").toggle(); 
});​

Demo.

注意:您可以将toggle替换为fadeToggleslideToggle

答案 5 :(得分:0)

您可以尝试这样的.hover(),

$('#divid').hover(
function(){
 //mouseenter function
},
function(){
 //mouseleave function
}
);

答案 6 :(得分:0)

你应该使用这样的东西:

$("#parent").mouseover(function(){
    $('#child').show();
});
$("#parent").mouseout(function(){
    $('#child').hide();
});​

jsFiddle示例:http://jsfiddle.net/phcwW/

答案 7 :(得分:0)

<div id="parent" onmouseover="callMouseOver()" onmouseout="callMouseOut()">
     foo
      <div id="child" style="display:none;">
         hidden
       </div>
</div>

Js方法:

function callMouseOver(){
    document.getElementById("child").style.display = "inline";
}

function callMouseOut(){    
    document.getElementById("child").style.display = "none";    
}