Как проверить, нет ли класса. Например, я знаю, как проверить, есть ли у него класс «тест», но как проверить, нет ли у него класса «тест»?
if($(this).hasClass("test")){
}
Как проверить, нет ли класса. Например, я знаю, как проверить, есть ли у него класс «тест», но как проверить, нет ли у него класса «тест»?
if($(this).hasClass("test")){
}
Ответ sdleihssirhc, конечно, правильный для случая в вопросе, но просто в качестве справки, если вам нужно выбрать элементы, которые не имеют определенного класса, вы можете использовать не селектор:
// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' ); // <-- alternative
Выберите элемент (или группу элементов) с классом «abc», но не с классом «xyz»:
$('.abc:not(".xyz")')
При выборе обычного CSS вы можете использовать .abc:not(.xyz)
.
используйте метод .not() и проверьте наличие атрибута:
$('p').not('[class]');
Проверьте это здесь: http://jsfiddle.net/AWb79/
Вы можете попробовать это:
<div id="div1" class="myClass">there is a class</div>
<div id="div2"> there is no class2 </div>
$(document).ready(function(){
$("#div2").not('.myClass'); // do not have `myClass` class.
});
Есть более сложные сценарии, когда это не работает. Что делать, если вы хотите выбрать элемент с классом A, который не содержит элементов с классом B. В итоге вам понадобится что-то вроде:
Если родительский элемент не содержит определенного дочернего элемента; jQuery
прочитав это 6 лет спустя, я подумал, что тоже попробую его, тоже в духе TIMTOWTDI...:D, надеясь, что это не неправильный «JS-этикет».
Обычно я устанавливаю переменную с условием, а затем ссылаюсь на нее позже..т.е.
// var set up globally OR locally depending on your requirements
var hC;
function(el) {
var $this = el;
hC = $this.hasClass("test");
// use the variable in the conditional statement
if (!hC) {
//
}
}
Хотя я должен упомянуть, что делаю это, потому что в основном использую условный тернарный оператор и хочу чистый код. Итак, в этом случае все, что у меня было бы, это:
hC ? '' : foo(x, n) ;
// OR -----------
!hC ? foo(x, n) : '' ;
...вместо этого:
$this.hasClass("test") ? '' : foo(x, n) ;
// OR -----------
(!$this.hasClass("test")) ? foo(x, n) : '' ;
Я не знаю почему, но принятый ответ не сработал для меня. Вместо этого это сработало:
if ($(this).hasClass("test") !== false) {}
if($(this).is(":not(.test)"))
›:)
- person Phrogz; 20.10.2011