2017-03-20 15 views
1

各リスト項目内のhref属性に基づいてリスト項目をフィルタリングできるjQueryスクリプトを作成しようとしています。したがってlistOnehrefhrefと等しい場合、listTwolistTwoliというクラスを追加してリストから削除したいと考えています。複数のリストで属性を比較して重複を削除する

<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に追加されていることです。 のようには見えません。重複した階層を選択してください。

スクリプトでは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

関連する問題