使用jQuery 1.4.2,隱藏的過濾器不會過濾出隱藏的元素,但是通過調用show()可以使其可見。過濾器假定它仍然隱藏。show()之後的jQuery假定display:inline是:hidden。爲什麼?
這個錯誤還是我錯過了什麼?考慮以下代碼:
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").css("display")
"none"
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").show()
Object
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").css("display")
"inline" // ?? Let me scratch my head...
$("td.ms-authoringcontrols > span[id*='_ParallelApprovers']:hidden:first").is(":hidden")
true //element with "display:inline", visible in browser, but yet it is hidden
而不是「內聯」,您會期望「無」,因爲:使用隱藏過濾器。
它所做的是從一個對象數組中選擇第一個隱藏元素。每次我調用這些代碼行時,我都希望他們選擇下一個隱藏元素(不是我剛剛展示的元素)。
你應該認真讀一篇關於'performance&selectors'的文章。基本上,你使用的選擇器不會更糟。 – jAndy 2010-06-14 15:30:14
我別無選擇,只能選擇ID包含的位置,因爲ASP.NET會將ID修改爲ClientID(添加父ID前綴)。 – 2010-06-15 07:27:51