$(this).attr('id':'name', visibility:'hidden', fill:'black', stroke-width:2)
使用此方法为1000元素设置其属性。一切正常,但.attr()需要10ms才能执行,我需要优化它,是否有.attr()的替代方法。
提前致谢
答案 0 :(得分:3)
尝试类似这样的事情,为了获得更好的性能,请使用setAttribute()。
setAttribute()方法添加指定的属性,并为其指定值。
this.setAttribute("id","name");
this.style.visibility = 'hidden';
答案 1 :(得分:2)
最快的替代方法是直接设置属性的相应属性。
this.id = 'name';
this.style.visibility = 'hidden';
答案 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});