使用Javascript从DOM元素添加/删除类的最有效方法是什么?

blu*_*lds 1 javascript css dom

我正在迭代Javascript中的大量dom元素,我想根据需要添加/删除类.

我可以使用哪种最有效的添加/删除类操作?

Rob*_*b W 5

  • 小类字符串:JSPerf.
  • 更大的类字符串:JSPerf.
  • 更大的类字符串,重复的类名:JSPerf.

去掉

最快可靠的方式(中小型):

var clss = 'classToRemove';
elem.className = (' '+elem.className+' ').split(' ' + clss + ' ').join(' ');
Run Code Online (Sandbox Code Playgroud)

如果您确定该字符串不包含多次出现的相同类名,则可以更好地使用该string.replace方法(任何大小):

var clss = 'classToRemove';
elem.className = (' '+elem.className+' ').replace(' ' + clss + ' ', ' ');
Run Code Online (Sandbox Code Playgroud)

其他选择:

  • 将RegExp与replace结合使用 - 在所有情况下都很慢
  • 利用indexOf找到的位置,并使用字符串连接(子),以去除类(在一个循环中重复这个删除所有可能的重复).重复的大字符串
    最慢,在其他情况下也不快.

添加(毫无疑问):

var clss = 'classToAdd';
element.className += ' ' + clss;
Run Code Online (Sandbox Code Playgroud)