найти li с определенным названием и удалить остальные li - PullRequest
1 голос
/ 23 декабря 2011

У меня есть список, в котором мне нужно выбрать элемент (в соответствии с атрибутом заголовка <a> внутри <li>) при загрузке страницы и удалить остальные элементы списка, кроме выбранного.

Использованиеэто:

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

Не работает.

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

Ответы [ 3 ]

1 голос
/ 23 декабря 2011

Я бы следовал логике:

  • Взять все элементы списка (li)
  • Выберите тех, у кого нет дочернего элемента a с указанным названием (это очень легко, используя метод filter, с которым я действительно рекомендую ознакомиться)
  • Удалить выбранное

Один из способов выполнить этот план:

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

Вы можете написать функцию фильтрации разными способами (используйте find() вместо has() или используйте какие-то комбинированные селекторы), но я действительно думаю, что вы должны использовать filter(). Это делает ваш код более читабельным и хорошо описывает, что происходит на самом деле.

jsFiddle Demo

0 голосов
/ 23 декабря 2011
$("#custom_pagination").find("a").not('[title="umm"]').parent('li').remove();

Если вы хотите сохранить его как одну строку кода.

0 голосов
/ 23 декабря 2011
$("li")
    .each(function(){
        if( $(this).find("a").is("[title='yourTitle']") ){
            $(this)
                .siblings()
                .remove();
        }
    });

Пример .

Или вы можете сделать это немного проще:

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

Пример .

Но это работает только в том случае, если существует один тег a, где атрибут title равен yourTitle (или любой другой заголовок, который вы решите найти).

...