使用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
而不是“内联”,你会期望“无”,因为:使用了隐藏过滤器。
它所做的是从一个对象数组中选择第一个隐藏元素。每当我调用这些代码行时,我希望他们选择下一个隐藏元素(而不是我刚刚展示的那个)。
答案 0 :(得分:2)
假设.show()
线性发生,您的代码将是正确的。但是.show()
启动一个以显示的对象结束的动画。如果您希望在显示代码后执行代码,请使用具有动画长度和回调.show(100,function(){})
的备用表单。