Как удалить элементы с повторяющимся содержимым

Много банановВ некоторых случаях, на сайте может появляться повторяющийся контент - блоки, ссылки, тест и т.д. Например, если в определенный блок подгружаются заголовки сообщений блога и сортируются по ярлыкам добавленным к посту, но если сообщению присвоено более одного ярлыка, то в разных разделах будут появляться ссылки на одни и те же посты.
  Не всегда есть возможность отследить этот процесс, что называется - "в ручную" и вовремя удалить дубликаты, однако это можно сделать программно с помощью JavaScript, в данном случаи jQuery.

Как удалить дубликаты ссылок со страницы

Допустим у нас есть список порядка:
<ul class="menu">
  <li>Разделы блога</li>
  <li><a href="#one">Что такое и зачем нужен JavaScript</a></li>
  <li><a href="#two">Структура HTML-документа. Куда добавить скрипт</a></li>
  <li><a href="#three">Удаленное подключение JS-файла</a></li>
  <li><a href="#one">Что такое и зачем нужен JavaScript</a></li>
  <li><a href="#two">Структура HTML-документа. Куда добавить скрипт</a></li>
  <li><a href="#three">Удаленное подключение JS-файла</a></li>
</ul>
ПРИМЕР
  В данном случаи принцип работы скрипта очень прост - найти все ссылки, сравнить и оставить только те, которые в документе определены впервые, т.е. уникальные, а повторения удалить.
  Сам скрипт выглядит так:
$('a').each(function(){
  $("a[href='" + $(this).attr("href") + "']").not(':first').remove();
});
  Чтобы удалить повторяющиеся ссылки не со всей страницы, а из определенного блока необходимо точно указать его в коде скрипта.
  Пример кода из демонстрационной страницы:
$('div.list-two > ul a').each(function(){
  $("div.list-two > ul a[href='" + $(this).attr("href") + "']").not(':first').parent('li').remove();
});

Как удалить повторяющиеся блоки по текстовому содержимому

  Для примера используем тот же список, но без ссылок - оставим только текст. Теперь, чтобы удалить бубликаты пунктов списка необходимо использовать другой скрипт, который сравнит текст с расположенный в пунктах и удалит содержащие повторения.
ПРИМЕР
  Скрипт в данном случаи выглядит так:
var original = [];
$('ul li').each(function() {
    var thisText = $(this).text();
    if (original[thisText]){
        $(this).remove();}
    else{
        original[thisText] = true;}
});
Не этом все. Варианты и примеры, а также замечания принимаются, как и прежде, в комментариях.
©http://magentawave.com

Комментариев нет:

Отправить комментарий

Следующее Предыдущее

BestProject