2012-08-03 22 views
0

當我在jQuery對象上調用.hide()時,該對象的樣式爲display: none。當您嘗試檢查此對象是否被object.is(':hidden')隱藏時,它會返回true,但當您嘗試使用相同的jQuery方法檢查其第一個孩子時,某些返回false,而某些返回true。jQuery .hide()方法和object.is(':hidden')

樣品:

<div id="parentContainer"> 
    <div id="childContainer"></div> 
    <p id="childContainer"></p> 
</div> 
$('#parentContainer').hide(); 

$("div[id='childContainer']").is(':hidden') // returns false 
$("p[id='childContainer']").is(':hidden') // returns true 

任何人有一個想法,爲什麼的行爲是這樣的嗎?

+0

$(「#DIV childContainer」)爲(「:隱藏」)是如​​何,你應該在第二部分選擇ID ...或者,因爲它只是一個ID,並且所有ID應該是UNIQUE,你可以寫$('#childContainer')。is(':hidden') – Kristian 2012-08-03 16:25:03

+3

沒有多個具有相同ID的元素。 – Ryan 2012-08-03 16:25:55

+0

他們都爲我回報真實。 http://jsfiddle.net/UpEjP/在IE8/IE9/firefox中測試14.0.1/Chrome 21.0.1180.60 – 2012-08-03 16:31:56

回答

1

這可能是一個與頁面上有兩個相同ID的問題。

標識在HTML中應該是唯一的,如果你有重複,那麼你應該使用類,否則你的代碼將無法通過W3C的驗證等

而且在您的文章你把$(「DIV [ID =‘childContainer’ ]「)。is(':hidden') - >返回false但是當我在jsfiddle中嘗試它時,我變爲true。 。

http://jsfiddle.net/kep7d/1/

+1

雖然你是對的。他選擇元素的方式仍然有效,因爲他在技術上指定了元素類型 – 2012-08-03 16:29:39

+0

,'p'標籤的id與'div'標籤不同。抱歉錯字錯誤。 – rome 2012-08-03 17:29:26