<ul id="myid">
<li>microsoft</li>
<li>microsoft</li>
<li>apple</li>
<li>apple</li>
</ul>
Я хочу удалить дубликаты из li
с помощью jquery.
Как я могу это сделать?
<ul id="myid">
<li>microsoft</li>
<li>microsoft</li>
<li>apple</li>
<li>apple</li>
</ul>
Я хочу удалить дубликаты из li
с помощью jquery.
Как я могу это сделать?
пример Я нахожу, что script быстрее
var liText = '', liList = $('#myid li'), listForRemove = [];
$(liList).each(function () {
var text = $(this).text();
if (liText.indexOf('|'+ text + '|') == -1)
liText += '|'+ text + '|';
else
listForRemove.push($(this));
});
$(listForRemove).each(function () { $(this).remove(); });
uniqueLi = {};
$("#myid li").each(function () {
var thisVal = $(this).text();
if ( !(thisVal in uniqueLi) ) {
uniqueLi[thisVal] = "";
} else {
$(this).remove();
}
})
Создает индекс (объект) уникальных значений. Например, uniqueLi
будет выглядеть следующим образом:
{
"microsoft": "",
"apple": ""
}
Поэтому всякий раз, когда возникает значение, которое было добавлено в индекс раньше, связанный с ним <li>
удаляется.
Вы можете использовать
var inner = [];
$('li').each( function(index, Element){
if (jQuery.inArray(this.innerHTML, inner) == -1){
inner.push(this.innerHTML);
}
else {
$(this).remove();
}
});
Здесь функция, которая будет делать это несколько иначе:
function removeDuplicateItems(id) {
var ul = $('#' + id);
$('li', ul).each(function() {
if($('li:contains("' + $(this).text() + '")', ul).length > 1)
$(this).remove();
});
}
Вызов с помощью removeDuplicateItems('myid');
Я использовал решение @Thariama в прошлом, но у меня проблемы с совместимостью с IE6 (мне все еще нужно поддерживать этого динозавра).
Если элемент повторяется, удалите его из ul. Он работает с динамическим добавлением li.
var seen = {};
$("ul#emails_exclusion_list").find("li").each(function(index, html_obj) {
txt = $(this).text().toLowerCase();
if(seen[txt]) {
$(this).remove();
} else {
seen[txt] = true;
}
});