2014-04-03 91 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