找到具有特定标题的 li 并删除其余的 li

Posted

技术标签:

【中文标题】找到具有特定标题的 li 并删除其余的 li【英文标题】:finding a li with specific title and removing the rest li 【发布时间】:2012-01-26 17:33:40 【问题描述】:

我有一个列表,我需要在页面加载时选择一个元素(根据<li> 内的<a> 的标题属性)并删除除所选元素之外的其余列表元素。

使用这个:

$("#div").find("a[title='Previous Page']").not(this).remove();

它不工作。

http://jsfiddle.net/ymhrF/16/

【问题讨论】:

【参考方案1】:

我会遵循的逻辑是:

获取所有列表元素 (li) 选择那些没有具有指定标题的孩子a 的人(使用filter 方法很容易,我真的建议您熟悉它) 删除选中的一个

您可以完成此计划的一种方法是:

$('#list li')
    .filter(function () 
        return !$(this).has('a[title="Previous Page"]').length;
    )
    .remove();

您可以通过多种方式编写过滤函数(使用find() 而不是has() 或使用某种组合选择器),但我真的认为您应该使用filter()。它使您的代码更具可读性,并且可以很好地描述实际发生的情况。

jsFiddle Demo

【讨论】:

【参考方案2】:
$("#custom_pagination").find("a").not('[title="umm"]').parent('li').remove();

如果您想将其保留为一行代码。

【讨论】:

【参考方案3】:
$("li")
    .each(function()
        if( $(this).find("a").is("[title='yourTitle']") )
            $(this)
                .siblings()
                .remove();
        
    );

Example.

或者你可以更简单一点:

$("li")
    .find("a[title='yourTitle']")
    .parent()
    .siblings()
    .remove();

Example.

但这仅适用于存在单个 a 标记且标题属性为 yourTitle(或您决定查找的任何标题)的情况。

【讨论】:

是的,它可以工作,但是如果没有与标题匹配的元素,则结果会显示整个列表 只需将else 添加到if 即可删除所有li 元素。

以上是关于找到具有特定标题的 li 并删除其余的 li的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定的 <ul> 类中找到所有 <li>?

如果 li 包含文本,则将更改应用于同一 li 中的特定 div,而不是全部

如何查找特定的数字长度,并使用 Notepad++ 删除/过滤其余部分?

用js添加li并在li里添加一个删除按钮,点击按钮 就要删除这个li, 但是我想问 我点击按钮 怎么找到这个li?

从后面的代码中删除 ASP.net 中 <li> 标记的 CSS 类

如何在CSS中选择具有特定类名的“最后一个孩子”?