【问题标题】:Issue with reaching second level of menu after hovering on first level悬停在第一级后到达第二级菜单的问题
【发布时间】:2014-02-06 06:11:32
【问题描述】:

HTML:

<ul class="main_menu">
  <li id="homebutton"> <a href="#">Home </a></li>
  <li id="servicebutton"> <a href="#" >Services </a></li>
  <li id="packagebutton"> <a href="#" >Packages </a></li>
  <li id="spabutton"> <a href="#">The spa </a></li>
  <li id="productbutton"> <a href="#">Product </a></li>
  <li id="mebutton"> <a href="#">About Me </a></li>
  <li id="contactbutton"> <a href="#">Contact </a></li>
              <div class="submenu">
              <div id="services_menu" class="active">
              <ul>
                <li>Services1</li>
                <li>Services2</li>
                <li>Services3</li>
                <li>Services4</li>
                <li>Services5</li>
              </ul>
              </div>
              <div id="packages_menu">
              <ul>
                <li>Packages1</li>
                <li>Packages2</li>
                <li>Packages3</li>
                <li>Packages4</li>
                <li>Packages5</li>
              </ul>
              </div>    
              </div>
</ul>

CSS:

ul.main_menu  {list-style-type: none; text-align: center;background-color:yellow;}
ul.main_menu li  {margin-left: 20px; display: inline; background-color:red;}
ul.main_menu li a  {text-decoration: none;color: white;}
.submenu  {height: 20px;width: 100%;}
#services_menu  {display: none;margin-top: 10px;}
#services_menu ul {list-style-type: none; text-align: center;}
#services_menu ul li  {margin-left: 20px; display: inline;}
#service_menu ul li a  {text-decoration: none; color: white;}
#packages_menu  {display: none; margin-top: 10px;}
#packages_menu ul {list-style-type: none; text-align: center;}
#packages_menu ul li  {margin-left: 20px; display: inline;}
#packages_menu ul li a  {text-decoration: none; color: white;}
.active {display: block!important;}

jQuery:

jQuery("#packagebutton").hover(
        function () {
            jQuery('#services_menu').removeClass( "active" );
            jQuery('#packages_menu').addClass("active");
        }, 
        function () {
            jQuery('#packages_menu').removeClass("active");
            jQuery('#services_menu').addClass( "active" );
        }
);

当我将鼠标悬停在第一级时,我正在创建一个导航,但之后当我将鼠标指针移动到第二级时,第二级消失。

应该对代码或 html 进行哪些更改以帮助我解决此问题?

DEMO HERE

【问题讨论】:

    标签: jquery html css menu navigation


    【解决方案1】:

    我在这里更新了你的脚本,请看这个:

    $(document).ready(function(){
      $("#packagebutton").mouseenter(function(){
        if(!$(this).hasClass('active')){
            $('#services_menu').removeClass( "active" );
            $('#packages_menu').addClass("active");
        }
      });
      $("#packagebutton").mouseleave(function(){
        if(!$(this).hasClass('active')){
            $('#services_menu').addClass("active");
            $('#packages_menu').removeClass("active");
        }
      });
    })
    

    演示链接:http://jsfiddle.net/jkkheni/7VpyY/14/

    【讨论】:

    • 但是当我将鼠标指针从包选项卡上移开时,它应该回到服务选项卡。
    • 分钟您不想下拉服务? @AryaMehta
    • 我的意思是当我将鼠标指针从“包”选项卡上移开时,#services_menu 应该再次激活
    • ok #service_menu 始终激活,但是当您将鼠标悬停在 #package_menu '#service_menu' deactivet 和 #package_menu 激活 @AryaMehta
    • 我更新了我的代码和 jsfiddle 链接请在 jsfiddle 中看到这个我还更改了 css 和 html @AryaMehta
    【解决方案2】:

    试试这个...

    jQuery("#packagebutton").hover(
    function () {
        jQuery('#services_menu').removeClass( "active" );
        jQuery('#packages_menu').addClass("active");
    },function(){
        jQuery('#services_menu').addClass( "active" );
        jQuery('#packages_menu').removeClass("active");
        });
    
    jQuery("#servicebutton").hover(
    function () {
        jQuery('#packages_menu').removeClass( "active" );
        jQuery('#services_menu').addClass("active");
        });
    

    【讨论】:

    • 但是当我将鼠标指针从包选项卡上移开时,它应该回到服务选项卡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多