【问题标题】:jQuery drop down navigation with click event带有点击事件的jQuery下拉导航
【发布时间】:2011-12-05 16:50:50
【问题描述】:

我需要用 jQuery 创建一个简单的(2 级)下拉菜单。网络上有很多下拉菜单的解决方案,但它们都适用于悬停事件。为了确保它可以在 iPhone 上运行,我想使用单击而不是悬停,但我遇到了问题。

HTML:

<ul class="nav nav-top" id="nav">
<li><a href="#">Menu Item 1</a></li>
<li>
    <a href="#">Menu Item 2</a>
    <ul class="nav">
        <li><a href="#">Submenu Item 1</a></li>
        <li><a href="#">Submenu Item 2</a></li>
        <li><a href="#">Submenu Item 3</a></li>
    </ul>   
</li>
<li>
    <a href="#">Menu Item 3</a>
    <ul class="nav">
        <li><a href="#">Submenu Item 1</a></li>
        <li><a href="#">Submenu Item 2</a></li>
        <li><a href="#">Submenu Item 3</a></li>
    </ul>
</li>
<li>
    <a href="#">Menu Item 4</a>
</li>

jQuery:

$(document).ready(function() {
$(".nav-top > li:has(ul)").toggle(function(e) {
    e.preventDefault();
    $(this).find('ul').show();
    $(this).addClass("expanded"); //This class set display:block to UL
},
function(e) {
    e.preventDefault();
    $(this).find('ul').hide();
    $(this).removeClass("expanded");
});

$(".nav-top > li:has(ul) ul").mouseup(function() {
    return false
});
$(document).mouseup(function(e) {
    if($(e.target).parent(".nav-top > li a").length==0) {
        $(".nav-top > li:has(ul)").removeClass("expanded");
        $(".nav-top > li:has(ul) ul").hide();
    }
});            

});

它不能正常工作。如果单击“菜单项 2”然后在某个位置而不是菜单然后再次“菜单项 2”它不会显示下拉菜单(参见示例:http://test.xhtml4u.ru/go/test.html),我认为原因在 .toggle 函数中,但不知道如何修复它。

感谢您的帮助。

【问题讨论】:

  • 你做了一个 $(".nav-top > li:has(ul)") 但我看到的是
  • 感谢您的注意,只是复制/粘贴错误,应该是

标签: jquery menu click


【解决方案1】:

DEMO jsBin

代码:

$(document).ready(function(){
  $(".nav-top > li").click(function(e) {
    if($(this).has('ul')){
      $('.expanded').removeClass('expanded').hide();
    }
    $(this).find('ul').addClass('expanded').show();
  });

  $('.nav-top a').click(function(e){
    e.preventDefault();
  });
});

【讨论】:

  • 谢谢伙计。我还添加了通过单击文档来删除下拉菜单的功能,并且效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-27
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多