如果element没有父类具有特定类

时间:2013-03-28 11:27:04

标签: javascript jquery parent

我正在尝试在jQuery中为具有父类具有特定类的元素创建一个if语句。

这是我到目前为止所提出的,但它不对。

if(!$(".myElem").parents(".myDiv")) {
    console.log("test")
};

请有人指出我正确的方向。

7 个答案:

答案 0 :(得分:25)

使用length检查选择器中是否有元素,closest()优于parents(),因为它会在找到匹配项后停止:

if(! $(".myElem").closest(".myDiv").length ) {
    console.log("has no parent with the class .myDiv")
}

答案 1 :(得分:6)

如果您正在测试类myElem的元素是否具有类myDiv的直接父级,请使用以下测试

if(!$(".myElem").parent().hasClass("myDiv")) {
    console.log("test")
};

答案 2 :(得分:3)

if($(".myElem").parent().hasClass(".myDiv")) {
    console.log("has a parent with the class .myDiv")
}
else
{
    console.log("no parent class .myDiv found")
}

答案 3 :(得分:1)

这应该选择那些具有myElem类的元素,其父类具有myDiv类:

$(".myElem").filter(function(elem) {
    return $(this).parents(".myDiv").length
});

或者这应该选择那些已经有类myElem并且没有父类具有myDiv类的元素:

$(".myElem").filter(function(elem) {
    return !$(this).parents(".myDiv").length
});

答案 4 :(得分:1)

如果$('。myElem')具有多个元素,则唯一可行的解​​决方案是Zoltan的解决方案

在此处查看示例

1º Local
Amsterdao

1.1 PDI
Casa de Anne Frank
-Descricao: Museu biografico localizado na cidade de Amsterdao, capital dos Paises Baixos.
-Horario de funcionamento: *7*19
 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');
 

答案 5 :(得分:0)

试试这个。

   if($("#child").parent("span#parent").length > 0)
   {
          console.log("parent is span");

   }
   else {
          console.log("parent is not span or no parent");
   }

答案 6 :(得分:0)

如果您知道孩子的类名,更好的方法是使用.closest()

if(!$('yourtag.childClass').closest('yourParentTag').hasClass('classname')){
    console.log('does not exist');
}