jquery 关于odd和even的执行效率

最近写了个这样的方法用来模糊查询客户端的数据.

其中$("#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")搞的。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值