1

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

使用这个:

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

它不工作。

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

4

3 回答 3

1

我要遵循的逻辑是:

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

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

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

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

jsFiddle 演示

于 2011-12-23T10:14:27.623 回答
0
$("li")
    .each(function(){
        if( $(this).find("a").is("[title='yourTitle']") ){
            $(this)
                .siblings()
                .remove();
        }
    });

例子

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

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

例子

但这仅适用a于 title 属性所在的单个标签yourTitle(或您决定查找的任何标题)。

于 2011-12-23T10:09:23.610 回答
0
$("#custom_pagination").find("a").not('[title="umm"]').parent('li').remove();

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

于 2011-12-23T10:14:27.470 回答