Jquery - 摆脱sizeset和sizechar

时间:2014-01-13 07:00:43

标签: javascript jquery

我正在动态构建Jquery元素,我在代码中使用了.clone()和.html()以及.append()。这适用于Chrome和Firefox甚至IE9。但IE8它的创建元素具有属性sizeset和sizechar。我的Jquery版本是1.7。我知道Stackoverflow在同一主题上提出了大约4到5个问题,但我还没有找到一个有用的答案。请帮助我,因为它阻碍了我的完整工作。我不能用户removeAttr as,其sizcache08213372050765756一些随机的垃圾值。如果我使用regEx

var re = /\s*(sizset|sizcache)\d*="[^"]*"/gi;
source = source.replace(re,'');

在其中一个帖子中提到

How to get rid of sizset and sizcache attributes from jQuery?

然后返回值是“不”,我不知道如何。

IE8 Contruction

<DIV class=findings sizcache08213372050765756="38" sizset="54">
   <DIV id=fnd-cv1 class="finding finding-readonly fnds-O closed" sizcache08213372050765756="38" sizset="54">
      <DIV class="cap-fnd-summary finding-summary summary clearfix" sizcache08213372050765756="36" sizset="0">
         <SPAN class=line-item>MS-2.3</SPAN>
         <A class=finding-title href="" jQuery17034048751834028246="188" toggleview="closed" sizcache08213372050765756="36" sizset="1"><SPAN class=icon-text-toggle></SPAN>Fnd 10</A><SPAN class="status finding-status">Open</SPAN> <SPAN class="status finding-status-item PA" href="">PA</SPAN> <SPAN class="status finding-status-item CA" href="">CA</SPAN> <SPAN class="status finding-status-item ROOT" href="">ROOT</SPAN> 
      </DIV>
      <DIV class="finding-items clearfix" sizcache08213372050765756="38" sizset="54"><SPAN class=recidivism sizcache08213372050765756="36" sizset="9"></DIV>
   </DIV>
   </SPAN>
</DIV>

1 个答案:

答案 0 :(得分:1)

不要使用正则表达式来解析HTML,迭代元素和属性,如果它们符合条件,则删除它们。

我把一个应该工作的jQuery插件鞭打了

$.fn.sizRemove = function() {
    return this.each(function() {
        for (var i=this.attributes.length; i--;) {
            var n = this.attributes[i].nodeName;
            if (n.indexOf('sizset') === 0 || n.indexOf('sizcache') === 0)
                this.removeAttribute(n);
        }
    });
};

被称为

$('#fnd-cv1').sizRemove();
// or for all elements
$('*').sizRemove();

FIDDLE