目标 parent div,但如果它包含嵌套 class

Target parent div, but not if it includes a nest class

我想使用 document.querySelectorAll 定位 parent div。但如果 div 包含嵌套的 div,并且带有特定的 class.

例如,在下面的示例中,我想抓取第一个 parent 和最后一个 floatContainer div。但不是这一秒,因为它包含 dropdown-container class.

document.querySelectorAll(".ej-form-field:not([dropdown-container])") 似乎不起作用。

console.log(document.querySelectorAll(".ej-form-field:not([dropdown-container])"))
<!-- GRAB THIS -->
<div id="floatContainer" class="ej-form-field">
  <label for="floatField">First name</label>
  <div class="input-container">
    <input id="floatField" class="ej-form-field-input-textbox" type="text">
  </div>
</div>

<!-- NOT THIS -->
<div id="floatContainer" class="ej-form-field">
  <label for="floatField">Last name</label>
  <div class="dropdown-container input-container">
    <input id="floatField" class="ej-form-field-input-textbox" type="text">
  </div>
</div>

<!-- GRAB THIS -->
<div id="floatContainer" class="ej-form-field">
  <label for="floatField">Telephone</label>
  <div class="input-container">
    <input id="floatField" class="ej-form-field-input-textbox" type="text">
  </div>
</div>

这段代码解决了你的问题。

console.log(document.querySelectorAll(".ej-form-field>div:not(.dropdown-container)"))

您必须针对特定的 class 而不是属性,即:

document.querySelectorAll(".ej-form-field:not(.dropdown-container))

我也找到了这个选项,它似乎也有效:

document.querySelectorAll("div.ej-form-field + :not(.dropdown-container)")