show()之后的jQuery假定display:inline是:hidden。为什么?

时间:2010-06-14 15:25:38

标签: jquery hidden elements

使用jQuery 1.4.2,:隐藏过滤器不会过滤掉隐藏的元素,但我通过调用show()使其可见。过滤器假设它仍然是隐藏的。

这个错误还是我错过了什么?请考虑以下代码:

$("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

而不是“内联”,你会期望“无”,因为:使用了隐藏过滤器。

它所做的是从一个对象数组中选择第一个隐藏元素。每当我调用这些代码行时,我希望他们选择下一个隐藏元素(而不是我刚刚展示的那个)。

1 个答案:

答案 0 :(得分:2)

假设.show()线性发生,您的代码将是正确的。但是.show()启动一个以显示的对象结束的动画。如果您希望在显示代码后执行代码,请使用具有动画长度和回调.show(100,function(){})的备用表单。