Dado un div que tiene una barra de desplazamiento (por ejemplo, b/c de desbordamiento: automático), ¿cómo obtengo el ancho interior exacto del elemento? En mi ejemplo: http://jsfiddle.net/forgetcolor/2J7NJ/ width e innerWidth informan el mismo ancho. El número Quiero debe ser inferior a 100.cómo obtener el ancho interno de un elemento en jquery SIN la barra de desplazamiento
HTML:
<div id='box1'>
<div id='box2'>
</div>
</div>
<p id="w"></p>
<p id="iw"></p>
CSS:
#box1 {
width:100px;
height:100px;
overflow:auto;
}
#box2 {
width:200px;
height:200px;
background-color:#aaa;
}
Javascript:
$('#w').text("width is: "+$('#box1').width());
$('#iw').text("inner width is: "+$('#box1').innerWidth());
Actualización:
Necesito esto para trabajar cuando el box2 div con contiene una imagen grande (por lo tanto, toma un segundo para cargar). Aquí hay un ejemplo, integrando una de las siguientes soluciones (Lukx '), que no funciona: http://jsfiddle.net/forgetcolor/rZSCg/1/. ¿Alguna idea de cómo hacer que espere a que la imagen se cargue antes de calcular el ancho?
innerWidth no tiene nada que ver con las barras de desplazamiento. Y dado que el tamaño (y la visibilidad) de la barra de desplazamiento diferirá según el navegador y el sistema operativo que se utilice, obtendrá una respuesta diferente cada vez. Probablemente deberías buscar soluciones alternativas para lo que sea que sea tu verdadero problema. – Blazemonger
Vea también: http://stackoverflow.com/q/8339377/1136253 –