最近写了个这样的方法用来模糊查询客户端的数据.
其中$("#AddressExample")是一个table,
bg01 是一个当前行变色的样式,
function aaa(val){
var indexVal = new RegExp(val.toUpperCase());
var obj = $("#AddressExample");
$.each(obj.find("tr"), function (i, n) {
var tdVal = $(n).find("td[name=sname]").text().replace(/[ ]/g, "");
if (indexVal.test(tdVal.toUpperCase())) {
obj.prepend($(n));
obj.find("tr:odd").addClass("bg01");
obj.find("tr:even").removeClass("bg01");
}
})
}
当执行这个方法时发现巨慢。于是开始优化,优化成:
function aaa(val){
var indexVal = new RegExp(val.toUpperCase());
var obj = $("#AddressExample");
$.each(obj.find("tr"), function (i, n) {
var tdVal = $(n).find("td[name=sname]").text().replace(/[ ]/g, "");
if (indexVal.test(tdVal.toUpperCase())) {
obj.prepend($(n));
}
})
obj.find("tr:odd").addClass("bg01");
obj.find("tr:even").removeClass("bg01");
}
发现效果显著相差不知一个数量级,两种方法的差别在于第一个循环了多次那两句第二个一次。可是理论上不能差这么多,最后发现是查询器中的find("tr:odd")和find("tr:even")搞的。。。