El código jQuery que manipula DOM en window.load no siempre se ejecuta
Frecuentes
Visto 364 veces
0
Necesito centrar el texto en una lista de selección. No existe un método de navegador cruzado y dispositivo que use solo CSS, por lo que usé JavaScript para establecer una sangría de texto.
El código toma el texto de la lista de selección, lo agrega a un lapso (que con css hace que el texto tenga el mismo tamaño) y mide el ancho del lapso. Con ese valor, se necesitan algunas matemáticas simples para determinar cuál debe ser la sangría del texto.
$(window).load(function() {
function textIndentFunc () {
textString = $('#from-1 :selected').text();
$('#hidden').text(textString);
textWidth = $('#hidden').width();
inputWidth = $('#from-1 select').width();
indentMy = (inputWidth / 2) - (textWidth / 2);
$('#from-1').css('text-indent',indentMy);
}
$('#from-1 select').change(function() {
textIndentFunc();
});
textIndentFunc();
});
La mayoría de las veces este código funciona bien, pero a veces parece que no hace nada, en cuyo caso normalmente se soluciona al actualizar la página. ¿Por qué este código es tan temperamental? ¿Tiene que ver con tener que manipular el dom?
Muchas Gracias
1 Respuestas
4
Do $(document).ready()
no $(window).load()
Al invocar $(document).ready()
su función se llama una vez que el DOM se procesa y está listo para ser manipulado mientras load()
devolverá la llamada una vez que todos los activos estén cargados (imágenes, sonidos).
respondido 07 mar '13, 17:03
Estoy teniendo el mismo problema. En la cara, el código es menos confiable ahora. FYI, mi código ya tenía carga de ventana y dom listo para hacer cosas diferentes. - evanss
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas jquery window-load or haz tu propia pregunta.
¿Se activa el evento .change() una vez que cambia el elemento? - lukas.pukenis
Sí, eso siempre parece funcionar bien. - Evanss