@krll-k

Как правильно употребить псевдоселектор not?

<div class="list">
  <div class="el">
    <div class="ad"></div>
  </div>
  <div class="el"></div>
  <div class="el"></div>
  <div class="el"></div>
  <div class="el"></div>
</div>

Как получить список элементов без того у которого есть в дочернем элемент с классом ad?
document.querySelectorAll('.list .el')
//вернет все 5
document.querySelectorAll('.list .el:not(.ad)')
//вернет все 5
  • Вопрос задан
  • 361 просмотр
Решения вопроса 2
можно так
var arr = Array.prototype.filter.call(document.querySelectorAll('.list .el'), function(item) {
	return item.querySelectorAll('.ad').length === 0;
});
Ответ написан
@krll-k Автор вопроса
использовать not так как мне бы этого хотелось не получиться, потому:
jq мне нельзя, только на чистом js:
var els = [];
[].forEach.call(document.querySelectorAll('.list .el'),function(item){
  if(item.querySelectorAll('.ad').length != 1){
    els.push(item)
  }
})
console.log(els)


Способ рабочий, но возможно существует изящнее
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Lumore
@Lumore
Front-end developer
jquery
$('.list .el').child().not('.ad');
Либо ваш пример:
<div class="list">
  <div class="el ad"></div>
  <div class="el"></div>
  <div class="el"></div>
  <div class="el"></div>
  <div class="el"></div>
</div>

document.querySelectorAll('.list .el:not(.ad)')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы