2014-04-03 58 views
1

嗨,我有这个菜单结构。如何取代基于多级菜单的菜单属性

<ul> 
    <li> 
     <a href="/link">Item 1</a> 
     <ul> 
     <li> 
      <a href="/link">Sub 1.1</a> 
      <ul> 
      <li><a href="/link">Sub 1.1.1</a></li> 
      <li><a href="/link">Sub 1.1.2</a></li> 
      </ul> 
     </li> 
     <li><a href="/link">Sub 1.2</a></li> 
     </ul> 
    </li> 
    <li> 
     <a href="/link">Item 2</a> 
     <ul> 
     <li><a href="/link">Sub 2.1</a></li> 
     <li><a href="/link">Sub 2.2</a></li> 
     </ul> 
    </li> 
    <li><a href="/link">Item 2</a></li> 
    </ul> 

我要转换一些<一>标签的href以“#”这样的:

<ul> 
    <li> 
     <a href="#">Item 1</a> 
     <ul> 
     <li> 
      <a href="#">Sub 1.1</a> 
      <ul> 
      <li><a href="/link">Sub 1.1.1</a></li> 
      <li><a href="/link">Sub 1.1.2</a></li> 
      </ul> 
     </li> 
     <li><a href="/link">Sub 1.2</a></li> 
     </ul> 
    </li> 
    <li> 
     <a href="#">Item 2</a> 
     <ul> 
     <li><a href="/link">Sub 2.1</a></li> 
     <li><a href="/link">Sub 2.2</a></li> 
     </ul> 
    </li> 
    <li><a href="/link">Item 2</a></li> 
    </ul> 

我尝试使用下面的jQuery来实现,但没有,可以有人帮忙弄清楚。谢谢。

if ($('ul li a').next().is('ul')){ 

    $(this).attr('href','#'); 
} 

我的逻辑基本上是IF <一个>下一个兄弟被< ul>然后用‘#’这样我能够保持对那些有链接替换此<一>的属性HREF没有孩子或自己的最后一个菜单元素。

回答

1

你所寻找的是filter

$('ul li a').filter(function(){ 
    return $(this).next('ul').length; 
}).attr('href', '#'); 
+0

十分感谢!完美的作品! – Adamtan