javascript中.attr()的替代方案

时间:2013-11-13 06:01:22

标签: javascript jquery

$(this).attr('id':'name', visibility:'hidden', fill:'black', stroke-width:2)

使用此方法为1000元素设置其属性。一切正常,但.attr()需要10ms才能执行,我需要优化它,是否有.attr()的替代方法。

提前致谢

3 个答案:

答案 0 :(得分:3)

尝试类似这样的事情,为了获得更好的性能,请使用setAttribute()。

setAttribute()方法添加指定的属性,并为其指定值。

this.setAttribute("id","name");
this.style.visibility =  'hidden';

答案 1 :(得分:2)

最快的替代方法是直接设置属性的相应属性。

this.id = 'name';
this.style.visibility = 'hidden';

http://jsperf.com/jquery-attr-vs-setattribute/2

答案 2 :(得分:1)

为什么不将类添加到那些被定义为具有所需属性的元素,而不是直接更改属性?

我在这里进行了一次性能测试:http://jsperf.com/attr-vs-classsname 而且我的浏览器/操作系统上的attr()方法慢了33%。

以下是:

的javascript:

this.className = "custom-class";
this.id = 'name';

随附css:

.custom-class {
  visiblity: hidden;
  fill: black;
  stroke-width: 2;
}

另外,你缺少attr()调用中的括号,并且需要将带连字符的stroke-width方法放在引号中,如下所示:

$(this).attr({id:'name', visibility:'hidden', fill:'black', 'stroke-width':2});