通过CSS隐藏/显示内容:悬停(或JS,如果需要)

时间:2010-05-11 08:52:26

标签: jquery html css mouseover rollover

我有以下html:

<li>
<span class="one">Stuff here</span>
<span class="two">More stuff</span>
</li>

.one { display: block; }
.two { display: none; }

当鼠标滚过one容器时,隐藏two并显示<li>的最简单方法(最好是仅限CSS)是什么。

如果无法通过CSS和Javascript完成此操作,我希望通过live()之类的内容更新jQuery,因为内容已实时更新,并且不希望手动重新绑定。

编辑: 我忘了提到这必须在IE6中工作:/

5 个答案:

答案 0 :(得分:11)

仅限CSS:

.one { display: block; }
.two { display: none; }

li:hover .one
{
    display: none;
}
li:hover .two
{
    display: block;
}

答案 1 :(得分:6)

 $('ul').delegate('li', 'mouseenter', function(){
     $('.one').hide();
     $('.two').show();
 })
 .delegate('li', 'mouseleave', function(){
     $('.one').show();
     $('.two').hide();
 });

答案 2 :(得分:2)

完全未经测试,您可能希望使用fadeIn()和fadeOut(),或使用更好的类(两个跨度应该具有相同的类,但ID不同)。这是一个jQuery示例:

$(document).ready( function(){
  $("li span")
     .mouseOver( function(){ $(this).hide() )
     .mouseOut( function(){ $(this).show() )
});

答案 3 :(得分:2)

根据您希望支持的浏览器,可以通过以下方式实现:

li .one { display: block; }
li:hover .one { display: none; }
li .two { display: none; }
li:hover .two { display: block; }

答案 4 :(得分:0)

<li>
 <span class="one">Stuff here</span>
 <span class="two">More stuff</span>
</li>​

js之后

<script type="text/javascript">

 sfHover = function() {
  var sfEls = document.getElementsByTagName("LI");
  for (var i=0; i<sfEls.length; i++) {
   sfEls[i].onmouseover=function() {
    this.className+=" sfhover";
   }
   sfEls[i].onmouseout=function() {
    this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
   }
  }
 }
 if (window.attachEvent) window.attachEvent("onload", sfHover);

</script> 

最后,css部分

.one { display: block; }
.two { display: none; }

li:hover .one, li.sfhover .one { display:none;}
li:hover .two, li.sfhover .two { display:block;}​

未经测试,但试一试