使用jQuery显示和隐藏div

时间:2009-09-24 20:32:31

标签: jquery

当您点击链接时,它会显示div“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 个答案:

答案 0 :(得分:2)

只需将“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>

答案 1 :(得分:0)

只需替换/删除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 :(得分:0)

RE解决“悬停在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);
});

鼠标输出处理程序设置超时,当您再次将元素鼠标悬停时,该超时会被清除。