代码之家  ›  专栏  ›  技术社区  ›  amy

用jquery显示和隐藏一个DIV

  •  1
  • amy  · 技术社区  · 16 年前

    当你点击链接时,它会显示“somecontent”。如果你再次点击链接,它就会隐藏起来。当鼠标悬停在链接上时如何使DIV显示,当鼠标移动时如何隐藏,而不是在单击时显示和隐藏?

    代码如下:

    <script type="text/javascript">
    $(document).ready(function(){
      $(".showcontent").click(function(){
        $(".somecontent").toggle("fast");
      });
    });
    </script>
    
    <a class="showcontent" href="">Show</a>
    <div class="somecontent">
       <p>some content</p>
    </div>
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   Quintin Robinson    16 年前

    只需替换/删除click事件并添加mouseover和mouseout(可以在原始元素选择上链接)。

    <script type="text/javascript">
    $(document).ready(function(){
      $(".showcontent").mouseover(function(){
        $(".somecontent").show();
      }).mouseout(function(){
        $(".somecontent").hide();
      });
    
      $(".somecontent").mouseout(function() { $(this).hide(); });
    
      $(".closelink").click(function() { $(this).parent().hide(); });
    });
    </script>
    
    <a class="showcontent" href="">Show</a>
    <div class="somecontent">
       <p>some content</p>
    </div>
    

    编辑: 根据科林的建议……

    对元素进行一点重构,这将提供您想要的结果。

    <div class="showcontent">
        <a href="#">Show</a>
        <div class="somecontent">
            <span class="closelink">Close</span>
            <p>some content<br />
                <a href="#">Link 1</a><br />
                <a href="#">Link 2</a><br />
                <a href="#">Link 3</a>
            </p>
        </div>
    </div>
    
        2
  •  2
  •   Ali Nazari    14 年前

    只需将“click”替换为“mouseover”…

    <script type="text/javascript">
    $(document).ready(function(){
      $(".showcontent").mouseover(function(){
        $(".somecontent").toggle("fast");
      });
    });
    </script>
    
    
    <a class="showcontent" href="">Show</a>
    <div class="somecontent">
       <p>some content</p>
    </div>
    
        3
  •  0
  •   gnarf    16 年前

    重新解决“悬停在DIV上”的问题。您可以设置如下内容:

    var revealLink = $('.showcontent');
    var revealDiv = $('.somecontent');
    var revealTimeout = 0;
    
    // we attach the mouseover/out events to both.
    revealLink.add(revealDiv).hover(function() {
      clearTimeout(revealTimeout);
      revealDiv.show();
    }, function() {
      // give user 500 ms to get over the other element to not hide.
      revealTimeout = setTimeout(function() { revealDiv.hide(); }, 500);
    });
    

    当鼠标再次悬停在元素上时,鼠标悬停处理程序将设置一个清除的超时。