와:
if(element.hasClass("class"))
하나의 클래스를 확인할 수 있지만 “요소”에 많은 클래스가 있는지 쉽게 확인할 수 있습니까?
나는 사용하고있다 :
if(element.hasClass("class") || element.hasClass("class") ... )
나쁘지는 않지만 다음과 같은 것을 생각하고 있습니다.
if(element.hasClass("class", "class2")
불행히도 작동하지 않습니다.
그런게 있습니까?
답변
어때요?
element.is('.class1, .class2')
답변
element.is('.class1, .class2')
작동 하지만, 그건 35 % 느린 것보다
element.hasClass('class1') || element.hasClass('class2')
내가 무슨 말을하는지 의심한다면 jsperf.com에서 확인할 수 있습니다 .
이것이 누군가를 돕기를 바랍니다.
답변
$.fn.extend({
hasClasses: function (selectors) {
var self = this;
for (var i in selectors) {
if ($(self).hasClass(selectors[i]))
return true;
}
return false;
}
});
$('#element').hasClasses(['class1', 'class2', 'class3']);
간단하고 쉬운 방법입니다.
답변
filter () 는 다른 옵션입니다
일치하는 요소 세트를 선택기와 일치하는 요소로 줄이거 나 함수의 테스트를 통과하십시오.
$(selector).filter('.class1, .class2'); //Filter elements: class1 OR class2
$(selector).filter('.class1.class2'); // Filter elements: class1 AND class2
답변
이건 어때요?
if (element.hasClass("class1 class2")
답변
다음은 구문을 따르는 답변입니다.
$(element).hasAnyOfClasses("class1","class2","class3")
(function($){
$.fn.hasAnyOfClasses = function(){
for(var i= 0, il=arguments.length; i<il; i++){
if($self.hasClass(arguments[i])) return true;
}
return false;
}
})(jQuery);
가장 빠르지는 않지만 모호하지 않은 솔루션을 선호합니다. 벤치 : http://jsperf.com/hasclasstest/10
답변
이건 어때?
$.fn.extend({
hasClasses: function( selector ) {
var classNamesRegex = new RegExp("( " + selector.replace(/ +/g,"").replace(/,/g, " | ") + " )"),
rclass = /[\n\t\r]/g,
i = 0,
l = this.length;
for ( ; i < l; i++ ) {
if ( this[i].nodeType === 1 && classNamesRegex.test((" " + this[i].className + " ").replace(rclass, " "))) {
return true;
}
}
return false;
}
});
사용하기 쉬운,
if ( $("selector").hasClasses("class1, class2, class3") ) {
//Yes It does
}
그리고 더 빠른 것 같습니다,
http://jsperf.com/hasclasstest/7
