2017-03-20 123 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