Javascript - 如果存在子菜单

时间:2013-12-23 10:17:31

标签: javascript menu

我的菜单如下:

<ul class="product-categories">
 <li>
  <a href="http://...">Test</a>
   <ul class="children">
    <li><a href="http://...">Test2</a></li>
   </ul>
  </li>
  <li><a href="http://...">Test3</a></li>
</ul>

脚本:

jQuery(function () {
    jQuery('.product-categories>li>ul').hide();
    if (jQuery('.product-categories>li').find('ul.children').length > 0) {
        jQuery(this).find('a').removeAttr('href');
        jQuery('.product-categories>li').on('click', function () {
            jQuery(this).find('ul').slideToggle(500)
                .siblings().find('ul:visible').slideUp(500);
            jQuery(this).toggleClass("active");
        });
    }
});

我遇到了javascript的问题。我想查看子菜单是否从父li中删除链接并在点击时显示/隐藏子菜单。有人可以帮忙解决这个问题吗?

如果我改变:

jQuery(this).find('a').removeAttr('href');

为:

jQuery('.product-categories>li>a').removeAttr('href');

它会删除所有父href个链接的Attr li,而不仅仅是在工作的位置。

我只是创建代码(并显示/隐藏工作,但我不知道如何仅在子菜单时删除链接):

    jQuery('.product-categories>li>ul').hide();
jQuery('.product-categories>li').children('a').removeAttr('href');      
jQuery('.product-categories>li').on('click',function(){
  if (jQuery(this).find('ul.children').length > 0) {
    jQuery(this).find('ul').slideToggle(500)
           .siblings().find('ul:visible').slideUp(500);
    jQuery(this).toggleClass("active");
  }
});     

1 个答案:

答案 0 :(得分:0)

你可以这样做:jQuery('ul li ul').prev('a').removeAttr('href')。 它会检查您是否嵌套了ul,并从该a之前的ul标记中删除了该属性。