Должен ли я использовать "hasClass" перед "addClass"? [дубликат]
этот вопрос уже есть ответ здесь:
я наткнулся на следующий скрипт, который проверяет, имеет ли элемент class a, а если нет, добавляет он:
if (!$("div").hasClass("a")){
$("div").addClass("a");
}
поскольку jQuery не будет добавлять класс, если он уже существует, это может изменить на:
$("div").addClass("a");
однако, есть ли какие-либо улучшения производительности с помощью hasClass во-первых, или это с помощью того же метода, который addClass делает так или иначе, и поэтому дублирует логику?
3 ответов:
The
.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 операций в секунду.
Comments