在主题中,如何使用jQuery获取元素的总宽度,包括其边框和填充?我有jQuery维度插件,在我的760px宽,10px填充DIV上运行.width()返回760.
也许我做错了什么,但如果我的元素显示为780像素宽,Firebug告诉我它上面有10px填充,但调用.width()只给出760,我很难看到如何.
谢谢你的任何建议.
[更新]
最初的答案是在jQuery 1.3之前编写的,以及当时存在的函数,这些函数本身并不足以计算整个宽度.
现在,如JP正确地指出,jQuery有功能outerWidth和outerHeight其中包括border
和padding
默认,并且还margin
如果该函数的第一个参数是true
[原始答案]
该width
方法不再需要dimensions
插件,因为它已被添加到jQuery Core
您需要做的是获取该特定div的填充,边距和边框宽度值,并将它们添加到width
方法的结果中
像这样的东西:
var theDiv = $("#theDiv"); var totalWidth = theDiv.width(); totalWidth += parseInt(theDiv.css("padding-left"), 10) + parseInt(theDiv.css("padding-right"), 10); //Total Padding Width totalWidth += parseInt(theDiv.css("margin-left"), 10) + parseInt(theDiv.css("margin-right"), 10); //Total Margin Width totalWidth += parseInt(theDiv.css("borderLeftWidth"), 10) + parseInt(theDiv.css("borderRightWidth"), 10); //Total Border Width
分成多行,使其更具可读性
这样,即使您从css更改填充或边距值,您也将始终获得正确的计算值
任何绊倒这个答案的人都应该注意jQuery now(> = 1.3)有outerHeight
/ outerWidth
函数来检索宽度,包括填充/边框,例如
$(elem).outerWidth(); // Returns the width + padding + borders
要包括保证金,只需通过true
:
$(elem).outerWidth( true ); // Returns the width + padding + borders + margins