[英]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.