【问题标题】:Keep sub menu open保持子菜单打开
【发布时间】:2011-07-12 15:29:38
【问题描述】:

在此菜单中,子类别向下滑动。我在主类别页面上使用 CSS 来保持子菜单打开,但是 jQuery slideUp() 函数在 mouseOut 上禁用了它。我希望在主类别页面上时始终打开子菜单。

<div id="sidebar">
 <ul>
    <li class="main">
        <a href="real_estate.php" class="real_estate">Real Estate </a>
        <ul class="sub" id="sub_real_estate">
            <li> <a href="consulting.php">Consulting Services</a></li>
            <li> <a href="investment.php">Investment</a></li>
            <li> <a href="property_mgmt.php">Property Management</a></li>
            <li> <a href="development.php">Development</a></li>
        </ul>
    </li>
    <li class="main">
        <a href="investment.php" class="">Investment</a>
        <ul class="sub" id="sub_investment">
            <li><a href="philosophy.php">Philosophy</a></li>
          <li><a href="criteria.php">Criteria</a></li>
      </ul>
    </li>
</ul>
</div>

jQuery

$(document).ready(function() {
$(".main").hover(function() {
    $(".sub", this).slideDown('slow');
},
function() {
    $(".sub", this).slideUp('slow');
});
})  

CSS

.sub {display:none;}

body.real_estate #sub_real_estate, body.investment #sub_investment {
display:block;
}  

【问题讨论】:

    标签: jquery css


    【解决方案1】:

    试试这个:

    $(document).ready(function() {
        $(".main").hover(function() {
            $(".sub", this).slideDown('slow');
        },
        function() {
            if(window.location.href != 'mysite.com/main-categories')
            {
                $(".sub", this).slideUp('slow');
            }
        });
    });
    

    只需alert(window.location.href); 即可查看您的主类别页面href 是什么,并将该值交换到我在上面提供的比较中。

    【讨论】:

      【解决方案2】:

      您可以在每个页面的子菜单上放置class="current",并使用not()

      $(document).ready(function() {
      $(".main").hover(function() {
          $(".sub", this).not(".current").slideDown('slow');
      },
      function() {
          $(".sub", this).not(".current").slideUp('slow');
      });
      })
      

      在 CSS 中,您还必须从 .current 中删除 display:none;

      【讨论】:

      • 如果整个菜单都在一个页面上并且使用 php 包含在所有主要页面中,这会起作用吗?
      • 可以,只要CSS和Javascript包含在所有那些页面上即可。
      • 与您的不同之处在于使用了not(),并且您必须使用单个display:inherit; 行fx 使.current 在CSS 中可见。脚本和其他一切都将以与往常相同的方式协同工作。为什么你认为它不应该起作用?
      • 我对如何完成这项工作感到困惑,因为我将整个菜单放在一个页面上,并且它包含在网站的所有其他页面中。这就是为什么我不知道如何实现这个方法。
      • 意思是,我不能将当前类添加到每一页的不同子菜单中,因为我的整个菜单都在一个页面上。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多