如何删除div具有相同的URL并保持仅值?

时间:2013-12-01 11:22:06

标签: javascript jquery html

例如,我有像:

这样的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做到这一点?

5 个答案:

答案 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;
    });
});

演示:http://jsfiddle.net/CBhF6/

也就是说,循环遍历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;
    }
});

http://jsfiddle.net/c4zVk/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);
    }
});

Fiddle here.

答案 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(); 
            }
        }); 
    });
});

http://jsfiddle.net/rKpaK/2/