2010-03-26 17 views
8

Estoy tratando de determinar el ancho de una cadena. Estoy usando el siguiente código, pero siempre devuelve 0. Parece que a medida que se crea el elemento span y todavía no está presente en el cuerpo de la página, jQuery width() devuelve 0. ¿Hay alguna manera de que pueda obtener el ancho del texto sin recurrir a la creación de código html ficticio en la página?jQuery width() devuelve 0 para un elemento span creado sobre la marcha?

Gracias :)

$('<span>test</span>').width(); // width = 0 
$('span.width').width(); // returns a width value 

<body><span class="width">test</span></body> 

Respuesta

8

El elemento debe estar presente en el DOM para que se calcule el ancho. Si necesita calcular esto antes de que el usuario pueda ver el elemento, intente ocultarlo antes de colocarlo en el DOM.

+0

@Dominic Gracias por la edición :) –

1

Usted puede tratar de añadir el control con la propiedad CSS visibility: hidden a la página antes de conseguir el tamaño, evitando así la necesidad de hacer que el elemento visible.

No hay forma de obtener el ancho sin agregar el control, ya que muchas cosas diferentes pueden interferir con el ancho.

0

Usted no puede establecer un ancho de un elemento en línea por lo que probablemente siempre obtendrá 0, o nula, o no está definida, o alguna variación de salida que no te ayudará en absoluto.

0

Si establece el ancho con CSS en línea, creo que el ancho devuelve el valor correcto. No es ideal, pero podría estar bien para algunos contextos.

Cuestiones relacionadas