JQuery: проверить наличие дубликатов в нескольких списках - PullRequest
4 голосов
/ 23 ноября 2011

У меня есть следующий код:

<ul id="listOne">
    <li>John</li>
    <li>James</li>
    <li>Mary</li>
</ul>

<ul id="listTwo">
    <li>John</li>
    <li>Mark</li>
    <li>Mary</li>
</ul>

Что я хочу сделать - это скрыть любые объекты во 2-м списке, если они уже есть в 1-м списке.

Кто-нибудь может предложить что-нибудь?

Ответы [ 2 ]

5 голосов
/ 23 ноября 2011

Может быть, немного лучше, но вот что пришло в голову первым:

var firstList = [];
$("#listOne li").each(function() {
    firstList.push($(this).text());
});
$("#listTwo li").filter(function() {
    return firstList.indexOf($(this).text()) > -1;
}).remove();

Вот рабочий пример . Он создает массив текста элементов в первом списке, затем фильтрует элементы второго списка, возвращая только те, которые также есть в первом списке, а затем удаляет соответствующие элементы из DOM .

1 голос
/ 23 ноября 2011

Я бы отобразил первый список в массив, а затем filter второй список значений, которые имеют соответствующий текст, и скрыл бы такие, как это:

var values = $('#listOne li').map(function() { 
    return $(this).text();
}).get();

$('#listTwo li').filter(function() {
    return $.inArray($(this).text(), values) !== -1;
}).hide();

http://jsfiddle.net/infernalbadger/unTMz/

...