2013-03-28 52 views
11

我想在jQuery中为具有特定类的父元素的元素创建一个if语句。jQuery - 如果元素没有父类与特定的类

这是我到目前为止,但它是不正确的。

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

任何人都可以指出我在正确的方向请。

+2

http://stackoverflow.com/questions/31044/is-there-an-exists-function-for-jquery的 – Narek 2013-03-28 11:29:03

+0

可能重复[如何判断一个元素的前面或后面的元素jquery的存在吗?] (http://stackoverflow.com/questions/5685685/how-to-judge-an-elements-previous-or-next-element-exist-with-jquery) - 同样的问题,即使方向有点不同。 – 2013-03-28 11:29:34

+0

标题不符合问题。标题:“如果元素没有”,问题:“元素有” – 2013-03-28 11:40:23

回答

24

使用length检查它有在选择元素,因为它停止一旦找到匹配closest()会比parents()更好:

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

最近的不仅会找到直接的父母,还会搜索直到找到一个父母。 – 2013-03-28 11:35:52

+1

@塞瓦努斯 - 不是那个意思? – adeneo 2013-03-28 11:47:59

+0

目前尚不清楚这一点。 – 2013-03-28 11:56:02

5

如果要测试与类元素是否myElem有直接与父类myDiv使用下面的测试

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

here .hasClass()会比.is()更好的选项 – 2013-03-28 11:34:11

+0

@ITppl是的你是对的 – 2013-03-28 11:35:16

1

这应该选择已经得到类myElem与具有类myDiv父母这些元素:

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

或本应选择那些有类myElem并没有说有一个类myDiv父母这些元素:

$(".myElem").filter(function(elem) { 
    return !$(this).parents(".myDiv").length 
}); 
2
if($(".myElem").parent().hasClass(".myDiv")) { 
    console.log("has a parent with the class .myDiv") 
} 
else 
{ 
    console.log("no parent class .myDiv found") 
} 
0

试试这一个。

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

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

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

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