2017-03-20 1 views
1

각 목록 항목 내에서 href 특성을 기반으로 목록 항목을 필터링 할 수있는 jQuery 스크립트를 만들려고합니다. 따라서 listOne에있는 hreflistTwo에있는 href과 같으면 목록에서 제거하려면 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"); 
} 

위의 스크립트의 결과는 "숨겨진"클래스가 listTwo의 모든 li에 추가된다는 점이다. 에만 보이지 않는 중복 된 href를 선택하십시오.

스크립트를 작성하여 lihreflistOne이 중복 된 상태로 "숨김"클래스를 추가 할 수 있습니까?

+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