Определите, имеет ли элемент класс CSS с jQuery

Я работаю с jQuery и смотрю, есть ли простой способ определить, связан ли элемент с определенным классом CSS.

У меня есть идентификатор элемента и класс CSS, который я ищу. Мне просто нужно иметь возможность в выражении if выполнить сравнение, основанное на существовании этого класса в элементе.

Ответ 1

Используйте метод hasClass:

jQueryCollection.hasClass(className);

или

$(selector).hasClass(className);

Аргумент (очевидно) - строка, представляющая класс, который вы проверяете, и возвращает логическое значение (поэтому он не поддерживает цепочку, как большинство методов jQuery).

Примечание. Если вы передадите аргумент className, содержащий пробелы, он будет сопоставлен буквально с строкой `className элементов коллекции. Итак, если, например, у вас есть элемент,

<span class="foo bar" />

то это вернет true:

$('span').hasClass('foo bar')

и они вернут false:

$('span').hasClass('bar foo')
$('span').hasClass('foo  bar')

Ответ 2

из FAQ

elem = $("#elemid");
if (elem.is (".class")) {
   // whatever
}

или

elem = $("#elemid");
if (elem.hasClass ("class")) {
   // whatever
}

Ответ 3

Что касается отрицания, если вы хотите узнать, не имеет ли элемент класса, который вы можете просто сделать, как сказал Марк.

if (!currentPage.parent().hasClass('home')) { do what you want }

Ответ 4

Без jQuery:

var hasclass=!!(' '+elem.className+' ').indexOf(' check_class ')+1;

Или:

function hasClass(e,c){
    return e&&(e instanceof HTMLElement)&&!!((' '+e.className+' ').indexOf(' '+c+' ')+1);
}
/*example of usage*/
var has_class_medium=hasClass(document.getElementsByTagName('input')[0],'medium');

Это WAY быстрее, чем jQuery!

Ответ 6

 $('.segment-name').click(function () {
    if($(this).hasClass('segment-a')){
        //class exist
    }
});

Ответ 7

В моем случае я использовал функцию "is" jQuery, у меня был элемент HTML с разными классами CSS, я искал определенный класс в середине, поэтому я использовал "хороший" альтернатива проверке класса, динамически добавленного в элемент html, который уже имеет другие классы css, это еще одна хорошая альтернатива.

простой пример:

 <!--element html-->
 <nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>

 <!--jQuery "is"-->
 $('#menu').is('.cbp-spmenu-open');

расширенный пример:

 <!--element html-->
    <nav class="cbp-spmenu cbp-spmenu-horizontal cbp-spmenu-bottom cbp-spmenu-open" id="menu">somethings here... </nav>

   <!--jQuery "is"-->
    if($('#menu').is('.cbp-spmenu-bottom.cbp-spmenu-open')){
       $("#menu").show();
    }

Ответ 8

В интересах помогать любому, кто приземляется здесь, но на самом деле ищет свободный способ jQuery:

element.classList.contains('your-class-name')