リストフィルターを作成しようとしています。小さなリストでは問題なく動作しますが、大きなリストでは問題が発生し、非常に遅くなります。リセットボタンをクリックした場合、または一部の文字が削除された場合、新しいリストの表示が非常に遅くなります。これを行う方法に問題があるかもしれませんが、助けてください。以下は私のコードです: HTML:
<div class="filter-wrap">
<span class="clearable">
<input class="data_field" name="data_field" id="brands-search" placeholder="Search Brands Here" type="text"/>
<span class="icon_clear" style="cursor:pointer;">✘</span>
</span>
<div class="small-bt"><p class="common all">select all  |</p><p class="common none"> unselect all</p></div>
<div class="check-wrap" id="brands">
<div class="check-unit">
<input type="checkbox" class="check" />
<p class="slide-head brandList">Samsung</p>
</div>
</div>
</div>
JQuery:
$('.check-unit:nth-child(even)').css({'float':'right'});
function listFilter(list){
$('.data_field').change( function () {
var filter = $(this).val();
if(filter) {
$(list).children("p:not(:Contains(" + filter + "))").parent().slideUp();
$(list).children("p:Contains(" + filter + ")").parent().slideDown();
//console.log($(".a:nth-child(1)").text());
} else {
$(list).children("p").parent().slideDown().removeClass("a");
}
})
.keyup( function () {
$(this).change();
});
}
ここcheck-unit
が繰り返されます。詳細については、この jsfiddle http://jsfiddle.net/iiison/BdRpk/を参照してください。
もう1つ:レイアウトを適切にするために、私は使用しました$('.check-unit:nth-child(even)').css({'float':'right'});
(javascriptの最初の行)。入力ボックスに何かを入力すると、レイアウトが乱れます。この問題の解決策も教えてください。