在元素上使用重复的类名?

时间:2012-04-07 01:07:58

标签: javascript performance compatibility classname

我发现在我认为会降低性能的元素上添加新类名之前,有很多框架会检查重复的类名。

元素有重复的类名时是否有问题?

当使用重复的类名时,它也将应用CSS类而不会发生冲突。

<div class="aa bb cc aa"></div>

是否可以像elem.className += ' ' + 'aa ee'一样添加类名,即使该元素具有重复的类名?

3 个答案:

答案 0 :(得分:5)

有一个重复的类名没有“错误”,它只是多余的。这可能会对性能产生很小的影响,但如果你有很多重复的话,这只会产生很大的影响。

另外,防止重复只会有助于保持整洁。

答案 1 :(得分:0)

Semantic UI大量使用属性选择器

喜欢这里

jQuery(document).ready(function($) {
  $('#checked').click(function() {  
    var form_data = new FormData();           
    var form_data = new FormData(document.getElementById("form"));
    form_data.append('action', 'acao_checar');

    $.ajax({
      url: ajaxurl, 
      type: 'POST',
      dataType: 'text', 
      cache: false,
      contentType: false,
      processData: false,
      data: form_data,

      success: function(data){
        document.getElementsByClassName('single_add_to_cart_button').disabled = true;
      },

    });
  });
});

如果您希望.ui.grid [class*="left floated"].column { margin-right: auto; } .ui.grid [class*="right floated"].column { margin-left: auto; } margin-left拥有margin-right,则必须具有auto value类的副本(例如floated

答案 2 :(得分:0)

ES6提供了一个便捷的API,用于添加和删除和测试DOM元素的类名:classList.add(name)和classList.remove(name)和classList.contains(name)。

在ES6上下文中,该问题可能改为:

“如果我多次使用.classList.add()添加相同的className,然后又想通过classList.remove()删除该类,我是否需要多次调用classList.remove()? / p>

幸运的是,答案似乎是对.classList.remove()的单个调用就足以删除给定的类,无论您添加了多少次。

我找不到Google的简单答案,因此我编写了以下测试来告诉我它的行为。以DOM-element作为参数调用下面的函数不会引发错误:

function testClassListRemove (dem)
{
  dem.classList.add ("hello");
  dem.classList.add ("hello");
  dem.classList.add ("hello");
  ok (dem.classList.contains ("hello") );

  dem.classList.remove ("hello");
  ok (!  dem.classList.contains ("hello") );

  function ok (b)
  { if (! b)
    { throw new Error ('not ok ');
    }
  }
}