2011-12-01 69 views
1

我的菜单结构如下图所示:如何在用户点击子元素时使用jQuery向父元素添加类?

<ul class="sub-menu" style="display: none;"> 
<li class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1564 current_page_item menu-item-5230" id="menu-item-5230"><a href="http://artofsujatha.wpstag.sirahu.net/curriculam-vitae/" title="Curriculam VItae">Curriculam VItae</a></li> 
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5231" id="menu-item-5231"><a href="http://artofsujatha.wpstag.sirahu.net/bio/" title="Bio">Bio</a></li> 
<li class="menu-item menu-item-type-post_type menu-item-object-page menu-item-5232" id="menu-item-5232"><a href="http://artofsujatha.wpstag.sirahu.net/artist-statement/" title="Artist Statement">Artist Statement</a></li> 
</ul> 

当我点击UL内的任何LI元素,我需要添加类“活动”到UL元素。 我如何在jQuery中做到这一点?

+0

感谢您的answers.but当我点击李页面刷新得到这样的类名未设置。但是点击的LI的类名被设置为“当前菜单项”。基于此,我需要为其相应的UL设置类名。那么这个怎么做? –

+0

你使用wordpress吗?你用什么函数来生成菜单?这将帮助我们避免此任务的JavaScript。 – marcio

回答

0

我用这个one.It工作

<script> 
     $(document).ready(function(){ 
     $('ul.sub-menu li').each(function(){ 
    var linktext = $(this).attr('class'); 
    if($("linktext:contains('current-menu-item')")) { 
     $(this).parent('ul').addClass('current'); 
    } 
}); 
}); 
    </script> 
6

试试这个:

$('ul.sub-menu li').click(function(){ 
$(this).parent().addClass('active'); 
}); 
+0

如果你打算将它添加到每个'LI',为什么不把回调添加到'UL'? – Farray

+0

@Farray,如果'UL'有一个很大的填充,点击UL内的空白空间会激活它......最好将事件放在'LI'上,这似乎更合理。 – marcio

1

设置LI的onclick事件: -

$(this).parent().attr('class', 'active'); 
3
$('li.menu-item').click(function() { 
    $(this).parent('ul').addClass('active'); 
}); 

根据您对页面清爽的评论,这里是应该工作的解决方案:

$(function() { 
    $('li.current-menu-item').parent('ul').addClass('active'); 
}); 
1
$('li').click(function() { 
    $(this).parent().addClass('active'); 
}); 
1

试试这个

$(document).ready(function(){ 
    $("li.current-menu-item").parent().addClass("active"); 
}); 
0

也许这样的事情?

$(function() { 
    function updateMenu() { 
     $('ul.sub-menu.active').removeClass('active'); 
     $('li.current-menu-item').parent('ul.sub-menu').addClass('active'); 
    } 

    $('li.menu-item').click(function(e) { 
     // prevent page from redirect 
     e.preventDefault(); 

     // set new current-menu-item 
     $(this).siblings().removeClass('current-menu-item'); 
     $(this).addClass('current-menu-item'); 

     // and update active menu according the current-menu-item 
     updateMenu(); 
    }); 

    updateMenu(); 
}); 
相关问题