3

我有以下html:

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

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

什么是最简单的方法,最好只有 CSS,在鼠标悬停在容器上时隐藏one和显示。two<li>

如果这不能通过 CSS 而只能通过 Javascript 来完成,我更喜欢 jQuery,live()因为内容是实时更新的,并且不希望不断地手动重新绑定。

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

4

5 回答 5

11

仅 CSS:

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

li:hover .one
{
    display: none;
}
li:hover .two
{
    display: block;
}
于 2010-05-11T08:57:29.603 回答
6
 $('ul').delegate('li', 'mouseenter', function(){
     $('.one').hide();
     $('.two').show();
 })
 .delegate('li', 'mouseleave', function(){
     $('.one').show();
     $('.two').hide();
 });
于 2010-05-11T08:59:04.643 回答
2

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

$(document).ready( function(){
  $("li span")
     .mouseOver( function(){ $(this).hide() )
     .mouseOut( function(){ $(this).show() )
});
于 2010-05-11T08:56:13.370 回答
2

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

li .one { display: block; }
li:hover .one { display: none; }
li .two { display: none; }
li:hover .two { display: block; }
于 2010-05-11T08:57:07.267 回答
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;}​

未经测试,但试一试

于 2010-05-11T08:58:58.217 回答