在jquery中使用attr()而不是addClass的好处
使用attr()
而不是在jquery中使用addClass()
什么好处?
当您使用attr
方法设置任何元素的类时,它将使用您传递给attr
方法的第二个参数的任何值覆盖现有的类名。
就像使用addClass
方法将任何类添加到元素一样,它只会添加类并保留现有类。 如果要添加的类已经存在,那么它将忽略它。
例如
使用$('#div1').attr('class', 'newClass')
将给出
使用$('#div1').addClass('newClass')
将给出
所以总是建议使用addClass
/ removeClass
来使用jQuery来管理html元素的类。 但最终它取决于你的要求什么时候使用。
与使用attr('class')
操作类相比, addClass()
有几个好处:
-
它在语义上更清晰。
addClass
和removeClass
操纵元素的class
属性(或className
属性),这就是它。 他们让代码骗你是一件困难的事。 如果你说$whatever.addClas("selected")
,你会得到一个运行时错误,而如果你说$whatever.attr('clas', 'selected')
,它似乎不会做任何事情。 不过,从JS的观点来看,它仍然“有效”,因为谁知道呢? 您可能想要设置clas
属性。 当你试图用瑞士军刀作为开jar器时就会发生这种情况。 -
它适用于多个类。 如果你使用
attr
来添加和删除CSS类,并且会有多个(实际上很常见),你必须做一些字符串处理,以确保不会打扰任何其他应用类或拥有同class重复50次。addClass
和removeClass
为您做到这一点。 -
它显然要快得多。
我真的不能想到attr('class'...)
对addClass
的任何好处。 通常, attr
适用于没有其他内置方法来操作属性的情况。 在这种情况下,你应该使用它。
attr(a,b)将元素的“a”属性设置为“b”。
addClass(a)将“a”类添加到元素中
例如…
HTML
脚本
$("#box").attr("class", "myOtherClass");
结果
和…
HTML
脚本
$("#box").addClass("myOtherClass");
结果
jQuery链接:
.addClass()
的性能要好得多。
查看这个jQuery性能指南: http : //net.tutsplus.com/tutorials/javascript-ajax/10-ways-to-instantly-increase-your-jquery-performance/
我最喜欢的文章之一。
attr()
的唯一好处我知道如果它适用于SVG, addClass()
则不然。
这个答案有一些细节https://stackoverflow.com/a/10257755/2393562