Как проверить, не имеет ли элемент определенного класса? - PullRequest
204 голосов
/ 20 октября 2011

Как мне проверить, нет ли класса.Например, я знаю, как проверить, есть ли у него класс «тест», но как мне проверить, нет ли у него класса «тест»?

if($(this).hasClass("test")){
}

Ответы [ 7 ]

420 голосов
/ 20 октября 2011
if (!$(this).hasClass("test")) {
134 голосов
/ 20 октября 2011

ответ sdleihssirhc, конечно, правильный для случая в вопросе, но просто для справки, если вам нужно выбрать элементы, которые не имеют определенного класса, вы можете использовать селектор not :

// select all divs that don't have class test
$( 'div' ).not( ".test" );
$( 'div:not(.test)' );  // <-- alternative 
11 голосов
/ 10 июня 2015

Выберите элемент (или группу элементов), имеющий класс «abc», не имеющий класс «xyz»:

    $('.abc:not(".xyz")')

При выборе обычного CSS вы можете использовать .abc:not(.xyz).

6 голосов
/ 21 марта 2018

Вы можете попробовать это:

<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.
});
5 голосов
/ 21 февраля 2014

используйте метод .not () и проверьте атрибут:

$('p').not('[class]');

Проверьте здесь: http://jsfiddle.net/AWb79/

0 голосов
/ 13 марта 2018

прочитав это через 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) : '' ;
0 голосов
/ 06 октября 2016

Есть более сложные сценарии, где это не работает. Что если вы хотите выбрать элемент класса A, который не содержит элементов класса B. В конечном итоге вам нужно что-то более похожее на:

Если родительский элемент не содержит определенный дочерний элемент; JQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...