在jquery中使用attr()而不是addClass的好处

使用attr()而不是在jquery中使用addClass()什么好处?

当您使用attr方法设置任何元素的类时,它将使用您传递给attr方法的第二个参数的任何值覆盖现有的类名。

就像使用addClass方法将任何类添加到元素一样,它只会添加类并保留现有类。 如果要添加的类已经存在,那么它将忽略它。

例如

 

使用$('#div1').attr('class', 'newClass')将给出

 

使用$('#div1').addClass('newClass')将给出

 

所以总是建议使用addClass / removeClass来使用jQuery来管理html元素的类。 但最终它取决于你的要求什么时候使用。

与使用attr('class')操作类相比, addClass()有几个好处:

  • 它在语义上更清晰。 addClassremoveClass操纵元素的class属性(或className属性),这就是它。 他们让代码骗你是一件困难的事。 如果你说$whatever.addClas("selected") ,你会得到一个运行时错误,而如果你说$whatever.attr('clas', 'selected') ,它似乎不会做任何事情。 不过,从JS的观点来看,它仍然“有效”,因为谁知道呢? 您可能想要设置clas属性。 当你试图用瑞士军刀作为开jar器时就会发生这种情况。

  • 它适用于多个类。 如果你使用attr来添加和删除CSS类,并且会有多个(实际上很常见),你必须做一些字符串处理,以确保不会打扰任何其他应用类或拥有同class重复50次。 addClassremoveClass为您做到这一点。

  • 它显然要快得多。

我真的不能想到attr('class'...)addClass的任何好处。 通常, attr适用于没有其他内置方法来操作属性的情况。 在这种情况下,你应该使用它。

attr(a,b)将元素的“a”属性设置为“b”。

addClass(a)将“a”类添加到元素中

例如…

HTML

 

脚本

 $("#box").attr("class", "myOtherClass"); 

结果

 

和…

HTML

 

脚本

 $("#box").addClass("myOtherClass"); 

结果

 

jQuery链接:

http://api.jquery.com/attr/

http://api.jquery.com/addClass/

.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