例如,我有像:
这样的HTML<ul id='myul'>
<li>
<a href="http://domain.com/link1">Link1</a>
<span>something1</span>
</li>
<li>
<a href="http://domain.com/link2">Link2</a>
<span>something1</span>
</li>
<li>
<a href="http://domain.com/link4">Link4</a>
<span>something1</span>
</li>
<li>
<a href="http://domain.com/link1">Link1</a>
<span>something1</span>
</li>
</ul>
您可以看到重复href = http://domain.com/link1
。所以,我想删除一个主题,并只保留一个。这意味着我有HTML:
<ul id='myul'>
<li>
<a href="http://domain.com/link1">Link1</a>
<span>something1</span>
</li>
<li>
<a href="http://domain.com/link2">Link2</a>
<span>something1</span>
</li>
<li>
<a href="http://domain.com/link4">Link4</a>
<span>something1</span>
</li>
</ul>
我怎么能用jquery做到这一点?
答案 0 :(得分:3)
这是我想到的第一种方式:
$(document).ready(function(){
var urls = {};
$("#myul a").each(function() {
if (this.href in urls)
$(this).closest("li").remove();
else
urls[this.href] = true;
});
});
也就是说,循环遍历ul中的所有锚元素,并测试当前的一个是否有你已经看过的href - 如果是,则删除它,否则记下href。
答案 1 :(得分:1)
您可以使用$(“li”)。get(-1)
只要它是最后一个
答案 2 :(得分:1)
试试这个:
var lnkHash = {};
$('li > a').each(function(){
if(lnkHash[this.href])
{
$(this).closest('li').remove();
} else
{
lnkHash[this.href] = 1;
}
});
答案 3 :(得分:1)
尝试:
var url = [];
$("#myul").find("li").each(function(){
var href = $(this).find("a").attr("href");
if(url.indexOf(href) >= 0){
$(this).remove();
}
else{
url.push(href);
}
});
答案 4 :(得分:1)
试试这个:
$(function(){
$('#myul a').each(function(){
var currHref = $(this).attr('href');
$('#myul').find('a[href="' +currHref +'"]').each(function(index){
if(index > 0) {
$(this).closest('li').remove();
}
});
});
});