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

通过css:hover(或JS,如果需要)隐藏/显示内容

  •  3
  • Chris  · 技术社区  · 14 年前

    我有以下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中起作用:/

    5 回复  |  直到 14 年前
        1
  •  6
  •   jAndy    14 年前
     $('ul').delegate('li', 'mouseenter', function(){
         $('.one').hide();
         $('.two').show();
     })
     .delegate('li', 'mouseleave', function(){
         $('.one').show();
         $('.two').hide();
     });
    
        2
  •  11
  •   Ikke    14 年前

    仅CSS:

    .one { display: block; }
    .two { display: none; }
    
    li:hover .one
    {
        display: none;
    }
    li:hover .two
    {
        display: block;
    }
    
        3
  •  2
  •   elcuco    14 年前

    完全未测试,您可能希望使用fadein()和fadeout(),或者使用更好的类(两个跨度应该具有相同的类,但ID不同)。下面是jquery示例:

    $(document).ready( function(){
      $("li span")
         .mouseOver( function(){ $(this).hide() )
         .mouseOut( function(){ $(this).show() )
    });
    
        4
  •  2
  •   Tim Ebenezer    14 年前

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

    li .one { display: block; }
    li:hover .one { display: none; }
    li .two { display: none; }
    li:hover .two { display: block; }
    
        5
  •  0
  •   choise    14 年前
    <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;}​
    

    未经测试,但尝试一下