如何使用jquery删除重复的元标记?

时间:2015-09-16 17:50:04

标签: javascript jquery html

由于某些原因,我的页面在标题中包含两个元标记部分,它们是相同的。

如果此元标记只有一行,我可以创建一个jquery代码来删除重复的代码;但是,我的情况是这些元标记包含6行,如下面代码的第一部分所示:

(第二部分是我要删除的重复部分)

<meta property="fb:app_id" content="123456789">
<meta property="og:site_name" content="MyWebsite">
<meta property="og:url" content="http://ThisIsMyWebsite.com">
<meta property="og:title" content="Duplicated Meta Tag Testing">
<meta property="og:description" content="Test the duplicated meta tags">
<meta property="og:image" content="http://ThisIsMyWebsite.com/show.jpg">

<meta property="fb:app_id" content="123456789">
<meta property="og:site_name" content="MyWebsite">
<meta property="og:url" content="http://ThisIsMyWebsite.com">
<meta property="og:title" content="Duplicated Meta Tag Testing">
<meta property="og:description" content="Test the duplicated meta tags">
<meta property="og:image" content="http://ThisIsMyWebsite.com/show.jpg">

有没有明确的方法来查找/删除重复的部分?(只保留一部分)

谢谢。

2 个答案:

答案 0 :(得分:1)

这是一个解决方案,只保留第一个解决方案:

var found = {};
$('meta').each(function(){
    var $this = $(this);
    if(found[$this.attr('property')]){
         $this.remove();   
    }
    else{
         found[$this.attr('property')] = true;   
    }
});

答案 1 :(得分:0)

您可以创建for循环并删除第一个元属性后的所有元属性。

var exists = {};
$('meta').each(function () {
    var meta = $(this);
    var property = meta.attr('property');
    if(!property)
        return;

    if (exists[property]) meta.remove();
    else exists[property] = meta;
});

的jsfiddle: https://jsfiddle.net/7hwvyphm/