2011-05-25 49 views
2

jQuery的殺鏈接,如果李給了以下結構孩子

<ul> 
    <li><a href="example.com>1</a></li> 
    <li><a href="example.com>2</a></li> 
    <li><a href="example.com>3</a> 
     <ul> 
      <li><a href="example.com">3.1</a></li> 
      <li><a href="example.com">3.2</a> 
       <ul> 
        <li><a href="example.com">3.2.1</a></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
    <li><a href="example.com>4</a></li> 
</ul> 

我想自動刪除或殺死鏈接33.2

基本上有兒童必須在鏈接裏的任何被刪除。 這是怎麼回事?

回答

7

如果你不想保持文本:

$('li:has(ul) > a').remove(); 

DEMO

如果你想保持文本,你可以使用.replaceWith

$('li:has(ul) > a').replaceWith(function() { 
    return $(this).text(); 
}); 

DEMO

+1

我新會有一些很酷的東西一樣,只是不能把它自己,但如果他想保持文本什麼鏈接 ? – mcgrailm 2011-05-25 17:08:50

+0

@mcgrailm:查看我的更新。 – 2011-05-25 17:14:41

+0

這工作出色!非常感謝。 – kylex 2011-05-25 17:19:06

1

即使我沒有測試過,這應該工作:

$('li').filter(function(){ return $('ul', this).length ? this : ''; }).find('a:first').unwrap('<a></a>') 
0
$("a").click(function(e){ 
    if($(this).parent().children('ul').length > 0){ 
     e.preventDefault(); //prevent the link from being followed 
     $(this).remove(); //remove the a element 
    } 
}); 
0
$('ul li > ul').parent().children("a").attr("href","#") 
0

使用jQuery,

$('li > a').each(function() { 
    if ($(this).siblings().length) 
    $(this).remove(); 
});