Должен ли я использовать "hasClass" перед "addClass"? [дубликат]



этот вопрос уже есть ответ здесь:



я наткнулся на следующий скрипт, который проверяет, имеет ли элемент class a, а если нет, добавляет он:



if (!$("div").hasClass("a")){
$("div").addClass("a");
}


поскольку jQuery не будет добавлять класс, если он уже существует, это может изменить на:



$("div").addClass("a");


однако, есть ли какие-либо улучшения производительности с помощью hasClass во-первых, или это с помощью того же метода, который addClass делает так или иначе, и поэтому дублирует логику?

581   3  

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

    Ничего не найдено.