jQuery 1.8外部高度/宽度不工作
我在很多地方都使用了jQuery 1.8外部高度/宽度不工作,jquery,height,jquery-1.8,Jquery,Height,Jquery 1.8,我在很多地方都使用了户外灯和户外灯。现在,在jQuery1.8发布之后,我遇到了很多由对象返回而不是其大小引起的问题 例如: $('#stackoverflowdiv').Height() // returns 100 px $('#stackoverflowdiv').outerHeight() // returns "stackoverflowdiv" div 我发现唯一可以解决这个问题的方法是在函数中使用“true/false”,如下所示,但我得到的结果与标准的width()和
户外灯
和户外灯
。现在,在jQuery1.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中选择元素造成的。我将尝试制作一个演示 outerHeight
只返回一个整数或null
返回元素的高度,包括顶部和底部填充,
边框,可选边距,以像素为单位。如果在空的
元素,返回未定义(jQuery 3.0之前为null)
您的代码中一定有其他内容在对输出进行进一步处理,并使您看到div元素。JQuery 1.8height()
、innerHeight()
、outerHeight()
和outerHeight(true)
按预期工作:
-工作高度方法
上面的演示使用了一个div:
<div id="myDiv">My Div</div>
使用此脚本:
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("<br />height with padding: " + heightWithPadding);
$result.append("<br />height with padding and borders: " + heightWithPaddingAndBorder);
$result.append("<br />height with padding and borders and margin: " + heightWithPaddingAndBorderAndMargin);
在没有看到html和css的情况下,我不能确定它是否正常工作,但是您可以检查并检查它在jQuery1.8.0上是否正常工作 jQuery:
console.log($('#stackoverflowdiv').outerHeight(false));//returns 110
console.log($('#stackoverflowdiv').outerHeight(true));//returns 130
#stackoverflowdiv {
height:100px;
margin:10px 5px;
padding:5px;
border 2px solid #fff;
}
css:
console.log($('#stackoverflowdiv').outerHeight(false));//returns 110
console.log($('#stackoverflowdiv').outerHeight(true));//returns 130
#stackoverflowdiv {
height:100px;
margin:10px 5px;
padding:5px;
border 2px solid #fff;
}
是否确实忘记使用分号或定义
文档。就绪
?或者更糟糕的是,忘记定义边距
或边框
?这实际上是一个已知的jQuery bug,您可以阅读
我在没有参数的情况下遇到了这种情况,修复程序正在设置参数(尽管有一个默认的{false}),但是我能够通过将true参数替换为1,将false替换为0来打破Barlas的把戏。所以,如果你是,就不要这样做
这样做:
alert(jQuery(this).outerHeight(false));
不要这样做:
alert(jQuery(this).outerHeight());
alert(jQuery(this).outerHeight(0));
仅当我执行
.outerHeight(1)时,它才起作用代码>非.outerHeight(真)
最佳修复方法是在调用outerHeight
或outerWidth
时传递布尔参数true
或false
但是..
如果您没有访问调用outerHeight
的文件的权限,或者您不想编辑文件中的所有outerHeight
函数,您可以覆盖jQueryouterHeight
函数,如下所示,使其始终传递true
参数
var oldOuterHeight = $.fn.outerHeight;
$.fn.outerHeight = function () {
return oldOuterHeight.apply(this, [true]);
};
我想这可能是因为我正在使用contents()函数在iFrame中选择元素。我将对此进行测试。这似乎是您的代码的一个非常本地化的问题,因为jQuery的1.8高度/宽度方法的行为与预期的一样。如果有什么不同的话,1.8版本为这些方法添加了新功能,并解决/修复了几个问题。请参阅1.8修复程序中的一些标记:,,这个问题是因为jquery uiI的旧版本看到了相同的行为,如在外径/高度断开并返回元素,而不是数字。这个问题不应该结束。主持人干得好。新问题:这不应该关闭。我在将JQuery从1.7.2升级到1.9.1时遇到了JQuery工具提示插件的问题。将outerWidth()
更改为outerWidth(false)
并将outerwight()
更改为outerwight(true)
后,效果良好。当jquery tokeninput开始在错误的位置呈现下拉列表时,我遇到了这个问题。我追溯到一个outerHeight方法,并通过传递false来解决它。我还尝试删除jquery-ui-1.8.20,这也解决了这个问题-现在我将升级jquery ui,看看它是否与jquery的较新版本交互。在我的例子中,jquery tokeninput在升级到jquery 1.8及更高版本后中断。