简体   繁体   English

如果子元素不存在,则添加类

[英]Add class if child element not present

If this works when a class is present... 如果在上课的时候这样做有效...

$('.priority').children('.no-priority').addClass('normal');

How would I add a class if the child class .no-priority is missing? 如果缺少子类.no-priority,我将如何添加类?

Tried code below which does not work 尝试下面的代码不起作用

if (!$('.priority').children('.no-priority')) {
 $('.priority').addClass('prioritised');
 }

Neither does 也没有

$('.priority').not('.no-priority').addClass('prioritised');

You can use :not() , :has() 您可以使用:not() :has()

 $(".priority:not(:has(.no-priority))").addClass("normal") 
 .normal { color: green; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="priority"> <div class="does-not-have-no-priority"> does not have .no-priority </div> </div> <div class="priority"> <div class="no-priority"> has .no-priority </div> </div> 

Use filter 使用filter

 $('.priority').filter(function() { return $(this).find('.no-priority').length === 0; }).addClass('normal'); 

If I understand your question, you can do this in vanilla javascript: 如果我了解您的问题,则可以使用普通javascript进行此操作:

 var priority = document.querySelectorAll('.priority'); for (var i = 0; i < priority.length; i++) { if (priority[i].querySelector('.no-priority')) { priority[i].classList.add('normal'); } else { priority[i].classList.add('prioritised'); } } 
 .priority.normal { color: red; } .priority.prioritised { color: blue; } 
 <div class="priority"> <div class="no-priority">no priority</div> </div> <div class="priority"> <div class="foo">priority</div> </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM