Як перевірити, чи немає класу. Наприклад, я знаю, як перевірити, чи є у нього клас "test", але як я можу перевірити, чи немає в ньому класу "test"?
if($(this).hasClass("test")){
}
Як перевірити, чи немає класу. Наприклад, я знаю, як перевірити, чи є у нього клас "test", але як я можу перевірити, чи немає в ньому класу "test"?
if($(this).hasClass("test")){
}
Відповіді:
if (!$(this).hasClass("test")) {
Відповідь sdleihssirhc, звичайно, є правильною для випадку у питанні, але як орієнтир, якщо вам потрібно вибрати елементи, які не мають певного класу, ви можете використовувати селектор not :
// 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 із умовою, а потім посилаюсь на нього пізніше..ie;
// 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)"))
> :)