SPAN元素在jQuery的show()上成为块级别
我创建了两个演示:
演示1:http://jsfiddle.net/DqvTa/7/
演示2:http://jsfiddle.net/DqvTa/8/
演示几乎完全相同。 唯一的区别是我设置了#span { display:none; }
#span { display:none; }
在演示1和span { display:none; }
span { display:none; }
在演示2。
有人能解释为什么SPAN元素 - 在演示2中 - 成为块级元素?
我的假设是(在show()
期间)jQuery在内部创建一个SPAN元素来检查它是否自然是内联块或块级元素。 但是因为我将所有SPAN设置为display:none
在演示2中display:none
,所以jQuery无法确定。
顺便说一句这张票是在这里:http://bugs.jquery.com/ticket/8099
这是一个错误,对。 但你可以做$('span').css('display', 'inline');
而不是$('span').show();
这是因为.show()就像一个显示块,除了显示属性被恢复到最初的状态。
jQuery在使用show修改的节点中使用名为olddisplay的属性(您可以使用FireQuery查看它),如果修改了跨度的框模型(而不是#span),jquery不会识别节点的正确的旧显示模式
这个问题已被确定为一个错误。 门票在这里:
http://bugs.jquery.com/ticket/8099
上一篇: SPAN element becomes block level on show() in jQuery
下一篇: How to write value into an address in format string attack