Определите, имеет ли элемент класс 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!
Ответ 5
Проверьте официальную страницу часто задаваемых вопросов jQuery:
Как проверить, имеет ли элемент класс perticular или нет
Ответ 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')