如果li有孩子,jQuery kill链接

时间:2011-05-25 17:00:59

标签: 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

的链接

基本上应该删除任何有孩子链接的li。 什么是最好的方法呢?

5 个答案:

答案 0 :(得分:7)

如果您不想保留文字:

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

DEMO

如果您想保留文字,可以使用.replaceWith

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

DEMO

答案 1 :(得分:1)

即使我没有测试过,这应该可行:

$('li').filter(function(){ return $('ul', this).length ? this : ''; }).find('a:first').unwrap('<a></a>')

答案 2 :(得分: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
    }
});

答案 3 :(得分:0)

$('ul li > ul').parent().children("a").attr("href","#")

答案 4 :(得分:0)

使用jQuery,

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