У меня есть структура элемента HTML.

    <div class="parent">
       <div class="myChild">A</div>
       <div class="myChild">B</div>
   </div>

   <div class="parent">
       <div class="myChild notYou">C</div>
       <div class="myChild">D</div>
   </div>

Как получить весь класс myChild внутри класса parent, но исключить тот, у которого есть класс notYou, из моего выбора? Я использую этот скрипт:

$(".parent").not(".parent + .notYou").each(function(i){
//something
});

Но класс notYou все еще включен.

0
Vahn 5 Дек 2020 в 05:54

2 ответа

Лучший ответ

Я понимаю, что вам нужны все классы .mychild, кроме .notYou.

Вот как это можно было получить:

$(".parent > .myChild:not(.notYou)").each(function(i){
   console.log($(this).html())
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
       <div class="myChild">A</div>
       <div class="myChild">B</div>
   </div>

   <div class="parent">
       <div class="myChild notYou">C</div>
       <div class="myChild">D</div>
   </div>
1
kmoser 5 Дек 2020 в 04:37

Вы неправильно используете метод not. Вы можете выбрать элементы для этого сценария либо с помощью метода not, либо с помощью селектора :not.

$ ('. родитель. мой ребенок: not (. not You)'); //: не селектор

Или

$ ('. родитель. мой ребенок'). not ('. not You'); // .not метод

$(".parent .myChild").not(".notYou").each(function(i){
   console.log($(this).html())
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="parent">
       <div class="myChild">A</div>
       <div class="myChild">B</div>
   </div>

   <div class="parent">
       <div class="myChild notYou">C</div>
       <div class="myChild">D</div>
   </div>
1
Lokesh Saini 5 Дек 2020 в 08:31