一段纠结的JQuery代码

问题代码

    入web开发不到一年。最近开始学习JQuery,今天在敲完一段代码之后发现了一个有点儿神奇的问题,关于JQuery中的事件绑定的。先贴上代码:

<!DOCTYPE html>

<html>

<head>
  <meta charset="utf-8" />
  <title>bind</title>
  <script src="../jquery-2.2.2.min.js" type="text/javascript"></script>
</head>

<body>
  <div id="panel">
    <h5 class="head" style="background-color:green">点击我</h5>
    <h5 class="show" style="visibility:hidden;background:red">显示</h5>
  </div>

  <script type="text/javascript">
    $(function() {
      var $h=$(".show");
      $("#panel h5.head").bind("mouseover",function(){
          $h.show();
      });
        $("#panel h5.head").bind("mouseout",function(){
           $h.hide();
      });
    });
  </script>
</body>

</html>

问题描述

这段代码看上去没有一点儿问题。但是自己在查看效果时发现,当鼠标移到第一个h5标签上去的时候,第二个h5标签根本不显示,再移走,也没有反应;但是当我把第二个标签的visibility设置为visible的时候,鼠标移到第一个h5标签上去再离开之后,第二个h5标签就会消失,然后再移上去又会出现。
没弄明白为什么。希望理解这个问题的猿们帮忙解释一下。谢谢!

阅读 3.7k
4 个回答

visibility:hidden;改成display:none
jQuery的show()hidden()控制的是CSS的display而不是visibility。

show 和hide 只要控制display 的显示的,你混淆了吧

楼上回答是对的。

<script type="text/javascript">

$(function() {
  var $h=$(".show");
  $("#panel .head").hover(function(){
      $h.toggle();
  });
});

</script>
楼上都对,然后你为何不这样

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进