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

Ste*_*ris 11 jquery addclass

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

Sha*_*oli 27

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

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

例如

<div id="div1" class="oldClass"></div>
Run Code Online (Sandbox Code Playgroud)

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

<div id="div1" class="newClass"></div>
Run Code Online (Sandbox Code Playgroud)

在哪里使用$('#div1').addClass('newClass')会给

<div id="div1" class="oldClass newClass"></div>
Run Code Online (Sandbox Code Playgroud)

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


cHa*_*Hao 6

addClass()使用以下方法操作类有几个好处attr('class'):

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

  • 它适用于多个类. 如果您使用attr添加和删​​除CSS类,并且会有多个(实际上相当常见),您必须进行一些字符串处理以确保不会干扰任何其他应用类或具有相同的类上课重复50次. addClassremoveClass为你做到这一点.

  • 它显然要快得多.

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