2013-05-30 83 views
0

我想弄清楚我需要为以下函数编写的jQuery。当有人点击跨度“展开”时,我希望能够显示包含点击范围的LI的子菜单(UL)。点击显示母公司LI的UL

默认情况下,子UL是通过CSS隐藏的,但是当展开被点击时,我想显示它。

例如,见下面我的代码...

<li id="menu-item-15031" class="menu-item menu-item-type-post_type menu-item-object-page current-page-ancestor current-menu-ancestor current-page-parent current_page_ancestor menu-item-15031"><a href="http://www.tintworld.com/automotive-services/">Automotive Services</a> 
<ul class="sub-menu"> 
    <li id="menu-item-15039" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-15039"><a href="http://www.tintworld.com/automotive-services/window-tinting/">Window Tinting</a> 
     <ul class="sub-menu"> 
      <li id="menu-item-15033" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-484 current_page_item menu-item-15033"><a href="http://www.tintworld.com/automotive-services/car-window-tinting/">Car Window Tinting</a></li> 
      <li id="menu-item-15040" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15040"><a href="http://www.tintworld.com/automotive-services/computer-cut-film-system/">Computer Cut Window Tint System</a></li> 
      <li id="menu-item-15041" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15041"><a href="http://www.tintworld.com/automotive-services/solar-window-tint/">Solar Window Tint</a></li> 
      <li id="menu-item-15042" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15042"><a href="http://www.tintworld.com/automotive-services/custom-tint-designs/">Custom Tint Designs</a></li> 
      <li id="menu-item-15043" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15043"><a href="http://www.tintworld.com/automotive-services/removing-window-tint/">Removing Window Tint</a></li> 
      <li id="menu-item-15044" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-15044"><a href="http://www.tintworld.com/automotive-services/window-tint-regulations/">Window Tint Regulations</a></li> 
     </ul> 
    </li> 
</ul> 
<span class="arrow"></span> 
</li> 

我知道jQuery是超级容易,但老实说,我累坏了,不能换我的脑海里围绕它现在。

请帮帮我。 :)

+8

“老实说我已经筋疲力尽,现在无法将我的思绪笼罩它”=>休息一下,明天再回来,如果可能的话 – lc2817

回答

2

尝试其中任何。请大家乌尔疲惫的心灵:)

$(".arrow").click(function() { 
$(this).closest("li").find("ul.sub-menu").slideToggle("slow"); 
}); 

或者

$(".arrow").click(function() { 
$(this).prev("ul.sub-menu").slideToggle("slow"); 
}); 

或者

$(".arrow").click(function() { 
$(this).siblings("ul.sub-menu").slideToggle("slow"); 
}); 
+0

因为'.sub-menu'在儿童中不止一个'li',我认为它必须用直接子选择器'>'来选择。 – 2013-05-30 04:59:18

+0

'span.arrow'必须停下来,不要冒犯。为什么你会过分限定你的选择器? '$('。arrow')'本来是一样有效的,可能性能更高。它不会依赖于HTML。 – ZenMaster

+0

@ZenMaster对不起。我会改变它。我是一个微型优化怪胎。我倾向于认为'class = arrow'有多个元素,所以我倾向于用元素名称来简化对JS引擎的搜索。 – krishgopinath

0

试试下面的代码

$("span").click(function(thisElement) 
{ 
    $("#menu-item-15031 > ul").css("display","block"); 
}); 

您也可以使用此:

$(".arrow").click(function() { 
    $(this).closest("li").find("ul.sub-menu").slideToggle("slow"); 
}); 
+0

':O'真的这是一个解决方案? – 2013-05-30 05:04:54