我有以下JS:如果div有沒有內容隱藏其他分區
if ($("#secretContent").children().length == 0) {
$("#seemore").hide();
}
,這裏是一個jsFiddle證明我的問題。當id爲「secretContent」的div沒有子/內容時,我有意隱藏ID爲「seemore」的div。
任何幫助將不勝感激。提前致謝!
我有以下JS:如果div有沒有內容隱藏其他分區
if ($("#secretContent").children().length == 0) {
$("#seemore").hide();
}
,這裏是一個jsFiddle證明我的問題。當id爲「secretContent」的div沒有子/內容時,我有意隱藏ID爲「seemore」的div。
任何幫助將不勝感激。提前致謝!
這是做的伎倆http://jsfiddle.net/chepe263/9Jmug/1/
if ($("#secretContent").children().length < 1) {
$("#seemore").hide();
}
在撥弄它顯示的內容,因爲它有內部secretContent
所以...你想用== 0
代替> 0
,我想。
的aditional的DIV你的意思'=== 0'? – 2012-04-23 16:44:25
不,我的意思是==。 'children()'總是返回一個整數,'0'顯然是一個整數。絕對不需要在一個額外的'='符號上浪費一個字節。 – 2012-04-23 16:45:32
浪費整個字節?任何人如何處理這種開銷!? – Zirak 2012-04-23 16:46:24
可能要改變你「大於」在平等的:
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();
}
}
我似乎無法得到與jsFiddle一起工作:/ – jacktheripper 2012-04-23 16:46:27
您可能正在尋找@維加的建議。如果你關心文本內容,你還需要將'children()'改爲'content()'。 – 2012-04-23 16:47:13
@jacktheripper你的jsFiddle有文字內容。如果有一些內容/孩子,你想隱藏嗎? – 2012-04-23 16:49:03
我覺得如果你要檢查文本內容過多,你應該使用的.contents
代替.children
櫃面。還將>
更改爲==
。試着讓我知道,
if ($("#secretContent").contents().length == 0) {
$("#seemore").hide();
}
這不起作用 – jacktheripper 2012-04-23 18:10:43
@jacktheripper你想達到什麼目的? – 2012-04-23 18:11:25
替換 「> 0」 與 「== 0」
這應該做的伎倆!
我無法看到在我的例子中這是如何工作的。當你刪除ID secretContent的div的內容,然後運行,帶ID的div看起來更多保持顯示,並不隱藏? – jacktheripper 2012-04-23 16:58:34
你的意思是? http://jsfiddle.net/chepe263/hmEgh/ – chepe263 2012-04-23 17:06:32
這是行得通的,但是當div – jacktheripper 2012-04-23 17:10:45