jQuery 1.8外部高度/宽度不起作用
我在很多地方使用了outerHeight
和outerWidth
。 现在,在jQuery 1.8发布之后,我遇到了很多由对象返回而不是它的大小引起的问题。
例如:
$('#stackoverflowdiv').Height() // returns 100 px $('#stackoverflowdiv').outerHeight() // returns "stackoverflowdiv" div
我发现解决这个问题的唯一方法就是在函数中使用“true / false”,如下所示,但我得到的结果与标准的width()
和height()
函数相同:
$('#stackoverflowdiv').outerHeight(true) // returns 100 px $('#stackoverflowdiv').outerHeight(false) // returns 100 px
有谁知道为什么这不再工作或以其他方式获得元素的高度/宽度+其边距。
编辑:我开始相信这是因为我使用contents()
函数在iframe中选择元素。 我会尝试做一个演示。
这实际上是一个已知的jQuery错误 ,你可以在这里阅读。
我正在体验它没有参数,修复是设置参数(即使有一个默认的{false}),但我能够通过用1替换true参数并用0替换false来打破Barlas的小提琴。所以不要’如果你这样做的话。
做这个:
alert(jQuery(this).outerHeight(false));
不要这样做:
alert(jQuery(this).outerHeight()); alert(jQuery(this).outerHeight(0));
只有我这样才能工作.outerHeight(1);
不.outerHeight(true);
最好的解决方法是在调用outerHeight
或outerWidth
时传递布尔参数true
或false
但..
如果您无权访问调用outerHeight
文件或者您不想编辑文件中的所有outerHeight
函数,则可以覆盖jQuery outerHeight
函数,如下所示,使其始终传递true
参数
var oldOuterHeight = $.fn.outerHeight; $.fn.outerHeight = function () { return oldOuterHeight.apply(this, [true]); };
JQuery 1.8 height()
innerHeight()
和outerHeight()
以及outerHeight(true)
按预期工作:
演示 – 工作高度方法
上面的演示使用div:
My Div
使用以下CSS:
div{ border: 1px solid blue; padding: 5px; margin: 10px; }
使用此脚本:
var $div = $("#myDiv"); var height = $div.height(); var heightWithPadding = $div.innerHeight(); var heightWithPaddingAndBorder = $div.outerHeight(); var heightWithPaddingAndBorderAndMargin = $div.outerHeight(true); var $result = $("#result"); $result.append("height: " + height); $result.append("
height with padding: " + heightWithPadding); $result.append("
height with padding and borders: " + heightWithPaddingAndBorder); $result.append("
height with padding and borders and margin: " + heightWithPaddingAndBorderAndMargin);
导致以下结果:
height: 20 height with padding: 30 height with padding and borders: 32 height with padding and borders and margin: 52
它工作得很好,我不能确定没有看到你的html和css但你可以检查这个例子并检查它在jQuery 1.8.0上工作正常
这是工作jsFiddle。
jQuery的:
console.log($('#stackoverflowdiv').outerHeight(false));//returns 110 console.log($('#stackoverflowdiv').outerHeight(true));//returns 130
CSS:
#stackoverflowdiv { height:100px; margin:10px 5px; padding:5px; border 2px solid #fff; }
你确定忘了使用分号或定义document.ready
吗? 或者更糟糕的是忘了定义margin
或border
?
outerHeight
只根据jQuery DOC返回一个整数或null
。
您的代码中必须有其他东西与您的输出相关,并让您看到div元素。