我需要选择一个div中可见的一组span元素,如下所示:
这些span元素在样式表中设置了
使用jQuery的show()和hide()函数修改span元素的显示内容。
如果我从chrome控制台调用
在Firefox和IE中我没有这个问题。
我从chrome控制台复制了这个内容。如您所见,span元素videoDesc-1具有
$('#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 bug吗?
我通过以下方式解决了这个问题:
$('#videoDesc > span').each(function(i, e) {
if (this.style.display != 'none') {
...
}
});
但是这让我感到困扰,因为它似乎是一种错误的解决方案,正确的解决方案应该使用:visible
,但它在Webkit上不起作用。
jQuery 1.6.4