由于jquery正则表达式补丁导致的高CPU消耗

时间:2012-01-24 16:47:21

标签: javascript jquery

我将参与其他人开发的项目。我跟这个家伙没什么联系。 我注意到在加载页面时浏览器的CPU消耗非常高。

经过一些调查后,我认为问题来自一个jquery正则表达式的补丁,但我不清楚这个补丁的目标和这个cpu消耗的原因。

jQuery.expr[':'].regex = function(elem, index, match) {
   var matchParams = match[3].split(',');
   var validLabels = /^(data|css):/;
   var attr = {
      method:
         matchParams[0].match(validLabels) ? matchParams[0].split(':')[0] : 'attr',
         property: matchParams.shift().replace(validLabels,'')
   };
   var regexFlags = 'ig';
   var regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
   return regex.test(jQuery(elem)[attr.method](attr.property));
};

我已经看到这种方法被不断调用。

我有几次像这样的正则表达式的调用。

$(':regex(id,DelCompo.*$)').livequery('click',function(e) {
   //...
}

如果我评论它们,cpu消耗似乎是正常的。当然,有些功能已被打破。

我认为问题来自这个新的正则表达式函数。这是对的吗? 解决这个问题的最佳方法是什么?

由于

1 个答案:

答案 0 :(得分:0)

仅供参考,我通过在jquery选择器中不使用正则表达式来修复它。我想这不是我的文件的正确选择。