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