SPAN元素在jQuery中的show()上变为块级别

时间:2011-01-31 17:13:29

标签: jquery

我创建了两个演示:

演示1:http://jsfiddle.net/DqvTa/7/
演示2:http://jsfiddle.net/DqvTa/8/

演示几乎完全相同。唯一的区别是我在演示1中设置了#span { display:none; },在演示2中设置了span { display:none; }

有人可以解释为什么SPAN元素 - 在演示2中 - 成为块级元素吗?


我的假设是(在show()期间)jQuery在内部创建一个SPAN元素来检查它是否自然是内联或块级元素。但是因为我在演示2中将所有SPAN设置为display:none,所以jQuery无法确定它。


顺便提一下这张票:http://bugs.jquery.com/ticket/8099

3 个答案:

答案 0 :(得分:2)

这是一个错误,对吧。 但您可以$('span').css('display', 'inline');而不是$('span').show();

答案 1 :(得分:1)

这是因为.show()就像一个显示块,只是显示属性恢复到最初的状态。

jQuery在你用show修改的节点中使用一个名为olddisplay的属性(你可以用FireQuery看到它),如果你修改了span的盒子模型,(而不是#span)jquery不会认识到正确的旧显示模式节点

答案 2 :(得分:0)

此问题已被确定为错误。门票在这里:
http://bugs.jquery.com/ticket/8099