2017-03-20 81 views
1

我试图创建一个jQuery脚本,可以过滤掉每个列表项中的href属性的列表项。所以,如果在listOnehref等于在listTwohref,我想一个类添加到listTwoli从列表中删除。比较属性和删除多个列表中的重复项

<ul id="listOne"> 
    <li><a href="somelink"></a></li> 
    <li><a href="somelink"></a></li> 
</ul> 
<ul id="listTwo"> 
    <li><a href="somelink"></a></li> 
    <li><a href="somelink"></a></li> 
</ul> 

这里是我迄今为止在脚本:

var listOneHref = $("#listOne li a").each(function(){$(this).attr("href")}); 

var listTwoHref = $("#listTwo li a").each(function(){$(this).attr("title")}); 

if (listTwoHref = listOneHref) { 
    $("#listTwo ul li").addClass("hidden"); 
} else { 
    $("#listTwo ul li").removeClass("hidden"); 
} 

上述脚本的结果是“隐藏”类添加到每个lilistTwo。它似乎并没有只有选择重复的hrefs。

我该如何编写它,以便脚本仅在li s中添加“隐藏”类,并在里面重复了hreflistOne

+0

您可以创建一个索引JSON对象,然后把柜台上的元素ID所代表的每一指标。如果计数器大于1,则添加引用的类。例如:'var globalCounter = {elements:{}};元素[li_id] [element_id] =元素[li_id] [element_id] +1;' – Marco

回答

0

.each()将不会返回您认为它的列表;也不会使用其结果让你单独处理可能的比赛。

尝试:

$("#listOne li a").each(function() { 
 
    var href = this.href; 
 

 
    $('#listTwo li a').each(function() { 
 
    if (href == this.href) 
 
     $(this).parent().addClass('hidden'); 
 
    }); 
 
});
.hidden { 
 
    display: none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul id="listOne"> 
 
    <li> 
 
    <a href="somelink"></a> 
 
    </li> 
 
    <li> 
 
    <a href="somelink"></a> 
 
    </li> 
 
</ul> 
 
<ul id="listTwo"> 
 
    <li><a href="somelink">hidden</a></li> 
 
    <li><a href="somelink2">seen</a></li> 
 
</ul>

+0

完美地工作。谢谢! – nbrunzie