Как проверить, имеет ли элемент указанный класс c? - PullRequest
2 голосов
/ 21 апреля 2020

У меня есть следующая функция, которая обновляет свои данные следующим образом

refresh: function($contentholder) {

    $contentholder.each(function() {
        $this = $(this);
        if ($this.hasClass("Codes")) {
          //then it does some stuff in here
        }
      }
    }

$contentholder приходит с данными следующим образом

<div class="Codes" cod="t592">
  <h3></h3>
  <div class="Items">
    <div class="ItemCodes" id="592" time="2016/04/30 12:15" places="1"></div>

  </div>
</div>

Единственный способ получить мое выражение if обнаружен, если я проверю его следующим образом $this.hasClass("Codes"), но я хочу, чтобы оператор if выполнялся только в том случае, если hasClass("codes") содержит класс ItemCodes

Это то, что я пробовал, но не работа

if ($this.hasClass("Codes").length > 0) //comes back undefined even though there is data
if ($this.hasClass("ItemCodes"))` //doesnt get detected

По сути, я хочу сделать что-то вроде этого

if ($this.hasClass("Codes").find("ItemCodes"))

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Вы можете использовать find(), чтобы определить, были ли дочерние элементы .ItemCodes. Вам понадобятся два отдельных условия, поскольку эти утверждения не могут быть объединены.

refresh: function ($contentholder) {
  $contentholder.each(function () {
    $this = $(this);
    if ($this.hasClass("Codes") && $this.find('.ItemCodes').length) {
      // do some stuff in here
    }
  }
}
0 голосов
/ 22 апреля 2020

Вы можете использовать .is() метод в сочетании с :has() псевдоселектором следующим образом:

if ( $this.is('.Codes:has(".ItemCodes")') ) {
    //
}

let $that = $('div.Codes');
console.log( $that.is('.Codes:has(".ItemCodes")') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="Codes test me" cod="t592">
  <h3></h3>
  <div class="Items">
    <div class="ItemCodes" id="592" time="2016/04/30 12:15" places="1"></div>

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