Подтвердить что ты не робот

Добавить класс через jquery, но только тогда, когда он не существует

Я хотел бы добавить класс (class= "bbox" ) в ul-list, но только если класс не существует. Это то, что я до сих пор. Как я могу проверить с jquery, если класс существует в ul-tag?

$("ul").addClass("bbox");
4b9b3361

Ответ 1

Если вы хотите проверить, существует ли определенный класс, выполните следующие действия:

 if(!$("ul").hasClass("class-name")){
    $("ul").addClass("bbox");
 }

Если вы хотите проверить, существует ли какой-либо класс:

if ($('ul').attr('class') == '') {
    $("ul").addClass("bbox");
}

Ответ 2

karim79 вы почти получили его!

Позвольте мне исправить вас

$("ul:not([class*='bbox'])").addClass("bbox");

Вы сопоставляете тег с абсолютными классами, и если у ul были другие классы, сопоставление не было бы выполнено. Вы должны искать именно тот класс, который хотите добавить. Как и .hasClass aproach.

надеюсь, что это поможет

Ответ 3

Мне было интересно, что это будет хорошо работать →

$("ul").removeClass("bbox").addClass("bbox");

Сначала он удалит, если он есть, а затем добавит новый. Работала лучше для меня, поскольку я слишком ленив, чтобы набрать все, что if thingy.

Ответ 4

Просто используйте $('.selector').addClass("myClass");.

Функция jQuery add/remove выполняет проверку на наличие дубликатов внутри, что означает, что вызов addClass только дважды добавит класс один раз.

Ответ 5

Лаконично:

// fine, because nothing happens if 
// there are no matching elements
$("ul[class='']").addClass("bbox");

Ответ 6

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

$('.your-dom:not(.class-name)').addClass('class-name');

Ответ 7

Если я переключаюсь между двумя классами, я использую этот метод

if (foo)
    $('button.btn-foo').removeClass('foo bar').addClass('foo');
if (bar)
    $('button.btn-foo').removeClass('foo bar').addClass('bar');

Поэтому мне не нужно проверять текущую настройку кнопки