【发布时间】:2016-01-04 09:34:32
【问题描述】:
我尝试为所选选项创建搜索框(非常大的数据 - 大约 2000 个选项)
indexOf 方法非常慢..还有其他解决方案吗?
jQuery 代码:
$('#textfortitlesearch').on('keyup', function() {
var query = this.value.toLowerCase();
$('[id^="checkboxtitlelist"]').each(function(i, elem) {
var datavalue=$(this).attr("data-id");
if(datavalue.toLowerCase().indexOf(query) != -1)
{
$(this).parent('div').show();
}
else
{
$(this).closest('div').hide();
}
});
});
HTML 代码:
<input type="text" class="form-control" name="q1" id="textfortitlesearch" placeholder="Search and Select Expert Title">
<div style="overflow:auto;max-height:100px;margin-top:10px;">
<div class="exptspw" title="Electronic Enginnering Expert">
<input type="checkbox" name="expTitle[]" id="checkboxtitlelist1" value="1" data-id="Electronic Enginnering Expert"> Electronic Enginnering Expert
</div>
<div class="exptspw" title="African Grey Parrots Expert">
<input type="checkbox" name="expTitle[]" id="checkboxtitlelist2" value="2" data-id="African Grey Parrots Expert"> African Grey Parrots Expert
</div>
<div class="exptspw" title="Alpacas Expert">
<input type="checkbox" name="expTitle[]" id="checkboxtitlelist3" value="3" data-id="Alpacas Expert"> Alpacas Expert
</div>
......
<div class="exptspw" title="Sales Expert">
<input type="checkbox" name="expTitle[]" id="checkboxtitlelist2431" value="2431" data-id="Sales Expert"> Sales Expert
</div>
<div class="exptspw" title="Insurance Advisor">
<input type="checkbox" name="expTitle[]" id="checkboxtitlelist2433" value="2433" data-id="Insurance Advisor"> Insurance Advisor
</div>
<div class="exptspw" title="English Language Expert">
<input type="checkbox" name="expTitle[]" id="checkboxtitlelist2434" value="2434" data-id="English Language Expert"> English Language Expert
</div>
</div>
我认为搜索过程很慢......还有其他搜索数据的方法吗?
【问题讨论】:
-
你可以试试
$('[id^="checkboxtitlelist"]') .closest('div') .hide() .filter('[data-id*=' + query + ']') .closest('div') .show() -
@Satpal 相同的结果..非常慢..从大约 2000 个数据中搜索
-
你请求 DOM 做一些操作 2000 次,这是让它变慢的原因,而不是 indexOf() 方法