单击带有子元素的主选项时,下拉菜单中出错

时间:2015-09-22 15:02:08

标签: jquery html css drop-down-menu

我在html中有以下代码

<ul>
 <li>
   <a href="url1">URL1</a>
   <ul>
    <li><a href="url11">URL1_1</a></li>
    <li><a href="url12">URL1_2</a></li>
....

CSS代码:

.hidden {
   display: none;
}

和JS代码:

$(function() {

  $("ul > li > ul").addClass("hidden");
  $("ul > li > a").click(function(e) { 
    var li = $(this).parent();      
    e.preventDefault();     
    li.find("ul").first().slideToggle();        
   });      
}); 

如果使用e.preventDefault();我的子菜单已显示,但我的ul>li> a未将我的页面重定向到href链接。

然后......如果我删除e.preventDefault();然后显示我的子菜单,我的页面将被重定向到一个href链接,但我的子菜单会立即被隐藏。 你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您应该尝试将类添加到UL标记。

你的问题在于

 $("ul > li > a").click(function(e)

将陷入循环并阻止来自孩子ul的点击。

我会尝试给它们类 - 第一级,第二级,并在jQuery选择器中使用它。

 $(".second-level").addClass("hidden");
 $(".first-level > a").click(function(e) {

在原始元素标签IMHO上使用这样的通用选择器并不好。希望这可以帮助你