<ul id="myid">
<li>microsoft</li>
<li>microsoft</li>
<li>apple</li>
<li>apple</li>
</ul>
我想通過使用jquery從li
刪除重複項。jquery刪除重複的li
我該怎麼做?
<ul id="myid">
<li>microsoft</li>
<li>microsoft</li>
<li>apple</li>
<li>apple</li>
</ul>
我想通過使用jquery從li
刪除重複項。jquery刪除重複的li
我該怎麼做?
example 我發現劇本快
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(); });
感謝andres descalzo,我們如何使用「LIVE」數據做到這一點? – dave 2010-10-05 04:25:34
你能舉一個例子來說明你做了什麼,或者是另一個問題? – 2010-10-05 12:37:16
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();
}
});
與對象的'in'運算符相比''jQuery.inArray()'有點低效。 – Tomalak 2010-10-01 14:22:55
這裏是一個會做,方式略有不同的功能:
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;
}
});
它們總是彼此相鄰,命令行這個? – 2010-10-01 12:01:49