2013-03-28 65 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'); 
} 
相關問題