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

时间:2011-12-23 10:04:17

标签: jquery jquery-selectors dom-traversal

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

使用此:

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

它不起作用。

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

3 个答案:

答案 0 :(得分:1)

我遵循的逻辑是:

  • 获取所有列表元素(li
  • 选择那些没有具有指定标题的子a的人(使用我真正建议熟悉的filter方法非常容易)
  • 删除所选的

您可以实现此计划的一种方法是:

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

您可以通过多种方式编写过滤功能(使用find()代替has()或使用某种组合选择器),但我认为您应该使用filter()。它使您的代码更具可读性,并且非常清楚地描述了实际发生的事情。

jsFiddle Demo

答案 1 :(得分:0)

$("li")
    .each(function(){
        if( $(this).find("a").is("[title='yourTitle']") ){
            $(this)
                .siblings()
                .remove();
        }
    });

Example

或者你可以更简单地做到这一点:

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

Example

但这仅在有一个a标记时才有效,其中title属性为yourTitle(或您决定查找的任何标题)。

答案 2 :(得分:0)

$("#custom_pagination").find("a").not('[title="umm"]').parent('li').remove();

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