2012-04-23 50 views
2

我有以下JS:如果div有沒有內容隱藏其他分區

if ($("#secretContent").children().length == 0) { 
    $("#seemore").hide(); 
}​ 

,這裏是一個jsFiddle證明我的問題。當id爲「secretContent」的div沒有子/內容時,我有意隱藏ID爲「seemore」的div。

任何幫助將不勝感激。提前致謝!

回答

1

這是做的伎倆http://jsfiddle.net/chepe263/9Jmug/1/

if ($("#secretContent").children().length < 1) { 
    $("#seemore").hide(); 
}​ 

在撥弄它顯示的內容,因爲它有內部secretContent

+0

我無法看到在我的例子中這是如何工作的。當你刪除ID secretContent的div的內容,然後運行,帶ID的div看起來更多保持顯示,並不隱藏? – jacktheripper 2012-04-23 16:58:34

+0

你的意思是? http://jsfiddle.net/chepe263/hmEgh/ – chepe263 2012-04-23 17:06:32

+0

這是行得通的,但是當div – jacktheripper 2012-04-23 17:10:45

4

所以...你想用== 0代替> 0,我想。

+0

的aditional的DIV你的意思'=== 0'? – 2012-04-23 16:44:25

+0

不,我的意思是==。 'children()'總是返回一個整數,'0'顯然是一個整數。絕對不需要在一個額外的'='符號上浪費一個字節。 – 2012-04-23 16:45:32

+2

浪費整個字節?任何人如何處理這種開銷!? – Zirak 2012-04-23 16:46:24

4

可能要改變你「大於」在平等的:

if ($("#secretContent").children().length == 0) { 
    $("#seemore").hide(); 
}​ 

隨着維加表明,如果你關心文本節點,而不是嚴格的孩子HTML元素,那麼你需要的地方使用contents()children

if ($("#secretContent").contents().length == 0) { 
    $("#seemore").hide(); 
}​ 

下面是一個演示示出了以下兩者:

http://jsfiddle.net/jtbowden/NASQn/

注意!應該注意的是,.contents()計數任何文本里面的div

此:

<div> 
</div> 

這:

<div> </div> 

都被認爲不是空因爲第一有一個換行,第二個有一個空間,這都被認爲文本節點。正在使用.contents()時,認爲是空的唯一事情是這樣的:

<div></div> 

如果要解決這個問題,你需要檢查沒有children(),然後看看剩餘的文本只是空白:

if ($("#secretContent").children().length == 0) { 
    if($("#secretContent").text().match(/^\s*$/)) { 
     $("#seemore").hide(); 
    } 
} 

演示:http://jsfiddle.net/jtbowden/4xtME/

+0

我似乎無法得到與jsFiddle一起工作:/ – jacktheripper 2012-04-23 16:46:27

+0

您可能正在尋找@維加的建議。如果你關心文本內容,你還需要將'children()'改爲'content()'。 – 2012-04-23 16:47:13

+0

@jacktheripper你的jsFiddle有文字內容。如果有一些內容/孩子,你想隱藏嗎? – 2012-04-23 16:49:03

1

我覺得如果你要檢查文本內容過多,你應該使用的.contents代替.children櫃面。還將>更改爲==。試着讓我知道,

if ($("#secretContent").contents().length == 0) { 
    $("#seemore").hide(); 
}​ 
+0

這不起作用 – jacktheripper 2012-04-23 18:10:43

+0

@jacktheripper你想達到什麼目的? – 2012-04-23 18:11:25

1

替換 「> 0」 與 「== 0」

這應該做的伎倆!