HTML
<ul id="list" class="uol">
<li>beta</li>
<li>gamma</li>
<li>alpha</li>
<li>beta</li>
<li>zeta</li>
<li>BETA</li>
</ul>
<input id="find" type="button" value="Find" />
<input id="remove" type="button" value="Remove" />
JavaScript
$('#find').click(function(){
$('#list li').filter(function(){
return $(this).siblings().text().toUpperCase().indexOf($(this).text().toUpperCase()) != -1;
}).addClass('selecteditems');
});
$('#remove').click(function(){
var removed = [];
$('.selecteditems').each(function(i, item){
if($.inArray($(item).text().toUpperCase(), removed) != -1){
$(item).remove();
}
else{
removed.push($(item).text().toUpperCase());
$(item).removeClass('selecteditems');
}
});
});
検索ボタンをクリックする<li>
と、IDが付いた順序なしリスト内のすべてのアイテムにフィルターが適用されますlist
。次に、他のすべてのアイテムを取得し、<li>
それらのテキストを1つの文字列に追加して、大文字にします。<li>
次に、大文字になっている現在のアイテムがその文字列に含まれているかどうかを確認します。そこにある場合はtrueを返すため、クラスがselecteditems
追加されます。
削除ボタンをクリックする<li>
と、クラスの最初のアイテムを除くすべてがselecteditems
削除され、最初のアイテムからクラスが削除され<li>
ます。
こちらでチェックしてください。
すべてのアイテムの文字列に対してチェックするのではなく、個々のアイテムに対してチェックしていることを絶対に確認したい場合は、次のように検索するためのコードを変更できます。
$('#find').click(function(){
$('#list li').filter(function(){
var sibs = [];
$.map($(this).siblings(), function(sibling){
sibs.push($(sibling).text().toUpperCase());
});
return $.inArray($(this).text().toUpperCase(), sibs) != -1;
}).addClass('selecteditems');
});