jQuery(this).find(div:first).outerWidth IE 8 bug

时间:2012-09-27 09:36:00

标签: jquery internet-explorer

以下是代码:

var b = this;
b.children("li").each(function() {
    var c = jQuery(this).find("div:first");
    var g = c.outerWidth();
    alert(g);
}

警告语句抛出的值是每次迭代的常量值“3”,尽管它应该是不同的。仅在IE8中出现错误。原因和任何修复?

2 个答案:

答案 0 :(得分:0)

这不是一个错误。 outerWidth返回“匹配元素集合中第一个元素的当前计算宽度,包括填充和边框”[1]

恰好在IE8中,由于渲染差异,内容的宽度与其他浏览器的宽度不同。

您可以通过为div指定固定宽度(例如width: 640px)来验证此行为,这将导致所有浏览器中的行为一致。有关演示,请查看:

http://jsfiddle.net/y5Uur/1/

答案 1 :(得分:0)

默认情况下,div占用其父元素的整个宽度。所以所有的div都有相同的宽度:

示例:http://jsfiddle.net/fwHe5/1/

现在,如果你改变它以使div的浮动离开并且相对定位,它们就不再占据整个宽度。

示例:http://jsfiddle.net/fwHe5/2/