【发布时间】:2011-11-11 00:17:37
【问题描述】:
我需要在 div 内的列表中选择一个可见的 span 元素,如下所示:$('#videoDesc > span:visible') 或 $('#videoDesc > span').filter(':visible'),它在 webkit 中不起作用
这些 span 元素在样式表中设置了 display: none;(我测试了删除它,但没有任何改变)。在其中一个的样式标签上,我将其显示设置为 inline。
使用 jQuery 的 show() 和 hide() 函数修改 span 元素的显示。
如果我从 chrome 控制台调用$('#videoDesc > span:hidden');,我每次都会得到所有元素,不管我调用了哪个show()。同样,$('#videoDesc > span:visible'); 每次都会给我一个空列表:[]。
在 Firefox 和 IE 中我没有这个问题。
我从 chrome 控制台复制了这个。如您所见,span 元素 videoDesc-1 有一个 style="display: inline;" 并且在使用 :hidden 时仍然会出现
$('#videoDesc > span').filter(':hidden');
[<span id="videoDesc-1" style="display: inline;">…</span> ,
<span id="videoDesc-2">…</span> , <span id="videoDesc-3">…</span> ,
<span id="videoDesc-4">…</span>]
这是某种 webkit 错误吗?
我能够解决这个问题:
$('#videoDesc > span').each(function(i, e) {
if (this.style.display != 'none') {
...
}
});
但这让我很困扰,因为这似乎是一个错误的解决方案,正确的是使用:visible,但它在 webkit 上不起作用
jQuery 1.6.4
【问题讨论】:
-
我已经看到空标签和 .is(':visible') 的类似问题,特别是在 Chrome 中。 注册为 false,但 注册为真。
标签: jquery jquery-selectors webkit