2011-09-26 36 views
2

你好我的HTML看起來像這樣:jQuery的搜索,如果發現子元素

<ul class="first"> 
    <li> 
    <div class="tg-hey">hey</div> 
    <div class="tg-hi">hi</div> 
    <div class="tg-hoi">hoi</div> 
    </li> 
</ul> 
<ul class="second"> 
    <li> 
    <div class="tg-hey">hey</div> 
    <div class="tg-hi">hi</div> 
    <div class="tg-hoi">hoi</div> 
    </li> 
</ul> 
<ul class="third"> 
    <li> 
    <div class="tg-hey">hey</div> 
    <div class="tg-hi">hi</div> 
    <div class="tg-hoi">hoi</div> 
    </li> 
</ul> 

我需要的是找到,如果(例如在<ul class="second">)的<div class="tg-hey">存在與否。

我該如何檢查?

+0

如果存在什麼?一個特定的課程? – MattW

+0

對不起,忘了突出代碼,現在你可以看到;) – sbaaaang

回答

4

只需創建的選擇和檢查結果的長度(如果是0,將是假的,否則它是真實的):

if ($('ul.second div.tg-hey').length) { 
    alert("It exists"); 
} 

http://jsfiddle.net/SgnvH/

5
if($(".second:has(.tg-hey)").length) { 
    // do something 
} 

Demo.

如果你需要做點什麼與匹配元件(S),你並不真的需要先進行測試,因爲如果沒有匹配什麼都不會發生,所以:

$(".second:has(.tg-hey)").hide(); 

是完全安全的。

另一種方法是使用.is:has

if($(".second").is(":has(.tg-hey)")) { 
    // do something 
} 

Demo.

,但我不會這麼做的,因爲它只是似乎有太多的jQuery的一個相當簡單的任務。

0
$('.className').length 

if $('.className').length == 0,則該元素不存在。

編輯:

$('.second').length會告訴你很多元素是如何有類 「第二」。

$('.second .tg-hey').length會告訴你有多少個元素在類「second」中有類「tg-hey」。

這假定您正在使用jQuery!

+0

如果你倒投了我,你能告訴我爲什麼嗎?只是好奇。 – MattW

+0

這是我的解決方案工作示例,順便說一句。不知道爲什麼我得到了投票。 http://jsfiddle.net/mdw233/4WG4m/ – MattW

1

喜歡這個?

if ($('ul.second div.tg-hey').length > 0) 
    // exists 
else 
    // doesn't 
2
$(".second").has(".tg-hey").length > 0