我正在尝试在jQuery中创建一个if语句,用于筛选具有特定类父元素的元素。
这是我目前想出来的代码,但它并不正确。
if(!$(".myElem").parents(".myDiv")) {
console.log("test")
};
请问有人能指点我一下吗?
我正在尝试在jQuery中创建一个if语句,用于筛选具有特定类父元素的元素。
这是我目前想出来的代码,但它并不正确。
if(!$(".myElem").parents(".myDiv")) {
console.log("test")
};
请问有人能指点我一下吗?
使用 length
检查选择器中是否有元素,而 closest()
要比 parents()
更好,因为它一旦找到匹配就停止搜索:
if(! $(".myElem").closest(".myDiv").length ) {
console.log("has no parent with the class .myDiv")
}
如果你要测试一个class为myElem
的元素是否有一个名为myDiv的直接父元素,请使用以下测试
if(!$(".myElem").parent().hasClass("myDiv")) {
console.log("test")
};
if($(".myElem").parent().hasClass(".myDiv")) {
console.log("has a parent with the class .myDiv")
}
else
{
console.log("no parent class .myDiv found")
}
如果$('.myElem')有多个元素,唯一可行的解决方案是来自Zoltan的。
最初的回答
see the example here
var takeElements = $('.myElement').filter(function(){
return $(this).closest('.bannedAncestors').length === 0
});
takeElements.css('color','green');
var bannedElements = $('.myElement').filter(function(){
return $(this).closest('.bannedAncestors').length !== 0
});
bannedElements.css('color','red');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="bannedAncestors">
<div> number of nested element don't matters
<div class="myElement">
don't take this child since it has an ancestor we don't want
</div>
</div>
</div>
<div>
<div>
<div class="myElement">
but this one is ok
</div>
</div>
</div>
$(".myElem").filter(function(elem) {
return $(this).parents(".myDiv").length
});
$(".myElem").filter(function(elem) {
return !$(this).parents(".myDiv").length
});
试试这个。
if($("#child").parent("span#parent").length > 0)
{
console.log("parent is span");
}
else {
console.log("parent is not span or no parent");
}
.closest()
。if(!$('yourtag.childClass').closest('yourParentTag').hasClass('classname')){
console.log('does not exist');
}