Ответ 1
Проверка .hasClass()
не полезна, потому что jQuery также всегда будет проверять в пределах .addClass()
. Это просто дополнительная работа.
Я столкнулся с следующим script, который проверяет, имеет ли элемент класс a
, а если нет, добавляет его:
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
Поскольку jQuery не добавит класс, если он уже существует, его можно было бы изменить на:
$("div").addClass("a");
Однако есть ли улучшения производительности с помощью hasClass
во-первых, или это с использованием того же метода, который addClass
делает в любом случае и, следовательно, дублирует логику?
Проверка .hasClass()
не полезна, потому что jQuery также всегда будет проверять в пределах .addClass()
. Это просто дополнительная работа.
В исходном коде вы можете увидеть: https://github.com/jquery/jquery/blob/master/src/attributes/classes.js#L38-L45, что они проверяют, существует ли класс при использовании addClass
.
Поэтому нет смысла использовать .hasClass()
в этом случае.. (исключение было бы, если бы вы хотели выполнить больше действий, если у элемента не было класса.)
Для того, что стоит, в моем ограниченном тестировании есть улучшение производительности с .hasClass()
: http://jsperf.com/jquery-hasclass-vs-addclass-and-removeclass
Однако, даже если автономный .removeClass()
в Chrome несколько раз работает медленнее, он работает примерно в 70 000 операций в секунду.