我有以下jquery函数用于从文本框中筛选onkeyup事件上的列表框的内容。jquery列表框/文本框筛选器
function DoListBoxFilter(listBoxSelector, filter, keys, values) {
var list = $(listBoxSelector);
var selectBase = '<option value="{0}">{1}</option>';
list.empty();
for (i = 0; i < values.length; ++i) { //add elements from cache if they match filter
var value = values[i];
if (value == "" || value.toLowerCase().indexOf(filter.toLowerCase()) >= 0) {
var temp = String.format(selectBase, keys[i], value);
list.append(temp);
}
}
}
它为小到中等规模名单的伟大工程,但它与清单超过300-400项工作时有点慢......任何人都可以有一些想法,有利于优化JavaScript的一点点加快功能?
的函数被调用,用下面的代码:
$('#<% = txtSearch.ClientID %>').keyup(function() {
var filter = $(this).val();
DoListBoxFilter('#<% = lstPars.ClientID %>', filter, keys_<% = this.ClientID %>, values_<% = this.ClientID %>);
});
要使用此,我结合一个asp.net列表框,并且还填充两个JavaScript数组在页面上(键和值)。
这是存储在页面上的两个地方的数据,但使用这种方法,我能够使用列表框的回发获得选定的值,而无需使用javacript来提取值并将其缓存在隐藏的div中。 (它也节省了不得不在客户端浏览器页面加载运行功能..这是真正的功能,我看到的缓慢,所以存储在两个地方加快了页面渲染)
我发现我需要使用JavaScript数组方法,因为大多数浏览器不会承认任何隐藏选项标签的尝试......只有Firefox似乎这样做。
我不确定是否有可能优化并加速此代码,但如果任何人有任何想法,我将不胜感激。
感谢, 最大林女士
由于拉斯,这似乎更快地跑了一下我。唯一的问题是,它颠倒了列表中的项目顺序,但这是一个简单的解决方法。 – 2009-11-09 14:47:00