[Actualizar]
La respuesta original se escribió antes de jQuery 1.3, y las funciones que existían en ese momento no eran adecuadas por sí mismas para calcular el ancho completo.
Ahora, como JP dice correctamente, jQuery tiene las funciones externalWidth y exteriorHeight que incluyen border
y padding
por defecto, y también margin
si el primer argumento de la función estrue
[Respuesta original]
El width
método ya no requiere el dimensions
complemento, porque se ha agregado aljQuery Core
Lo que debe hacer es obtener los valores de ancho de relleno, margen y borde de ese div en particular y agregarlos al resultado del width
método
Algo como esto:
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
Dividir en varias líneas para que sea más legible
De esa manera, siempre obtendrá el valor calculado correcto, incluso si cambia los valores de margen o margen desde el CSS
parseInt
s se puede cambiar al+
operador para que el código sea más conciso. Por lo tanto,parseInt(theDiv.css("padding-left"), 10)
podría ser convertido a+theDiv.css("padding-left")
etc ...Cualquier otra persona que se encuentre con esta respuesta debe tener en cuenta que jQuery now (> = 1.3) tiene
outerHeight
/outerWidth
funciones para recuperar el ancho, incluido el relleno / bordes, por ejemploPara incluir también el margen, simplemente pase
true
:fuente
parece que externalWidth está roto en la última versión de jquery.
La discrepancia ocurre cuando
el div externo está flotando, el div interno tiene el ancho establecido (más pequeño que el div externo) el div interno tiene style = "margin: auto"
fuente
Solo por simplicidad, encapsulé la gran respuesta de Andreas Grech anterior en algunas funciones. Para aquellos que quieren un poco de felicidad de cortar y pegar.
fuente
los mismos navegadores pueden devolver cadenas para el ancho del borde, en este parseInt devolverá NaN, así que asegúrese de analizar el valor en int correctamente.
fuente
fuente