Как я могу проверить, если нет класса. Например, я знаю, как проверить, есть ли у него класс «тест», но как мне проверить, нет ли у него класса «тест»?
if($(this).hasClass("test")){
}
Как я могу проверить, если нет класса. Например, я знаю, как проверить, есть ли у него класс «тест», но как мне проверить, нет ли у него класса «тест»?
if($(this).hasClass("test")){
}
Ответы:
if (!$(this).hasClass("test")) {
Ответ sdleihssirhc, конечно, правильный для случая в вопросе, но просто для справки, если вам нужно выбрать элементы, которые не имеют определенного класса, вы можете использовать not selector:
// 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 etiquette'.
Я обычно устанавливаю переменную с условием, а затем обращаюсь к ней позже.
// 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)"))
> :)