Digamos que tienes algo de HTML,¿Cuál es la mejor manera de ejecutar algunos JS inmediatamente después de cargar un elemento?
<input id="mytextbox" type="text" value="hello world" />
Y usted quiere hacer un poco de magia en ese cuadro de texto tan pronto como se carga. Tal vez agregue algún tipo de widget o botón al lado, lo que sea. Hay 2 formas de hacer esto de las que soy consciente. Se puede tirar un poco de jQuery como este en el <head>
$(function() {
$('#mytextbox').magic();
});
Y eso va a funcionar una vez que la totalidad de DOM está listo, pero lo que si queremos que antes? ¿Tan pronto el elemento se cargó?
Podemos poner el JS inmediatamente después del elemento:
<input id="mytextbox" type="text" value="hello world" />
<script>
$('#mytextbox').magic();
</script>
Pero eso es un desordenado poco, y por qué tenemos que buscar en todo el DOM para un ID de elemento cuando sabemos exactamente dónde está? Los eventos onclick
tienen un argumento this
. ¿No hay alguna forma en que podamos hacer algo como esto ...
<input id="mytextbox" type="text" value="hello world" onload="$(this).magic()" />
? Sería la mejor solución de IMO, pero solo el cuerpo tiene un evento onload
aparentemente, y ningún otro evento parece adecuado. ¿Nos queda básicamente la solución n. ° 2 si queremos que una parte del código se ejecute inmediatamente después de cargar un elemento?
¿Qué sucede si tiene una página muy grande y algunos widgets de entrada mejorados con JS en la parte superior de la página? Acaba de hacerlos inutilizables hasta que se haya cargado toda la página. O tal vez algún evento importante debe activarse cuando realiza la acción X, pero se perdió el evento porque estaba esperando que el DOM se cargue para agregar sus manejadores. – mpen
¿Y asume que los navegadores utilizan algún tipo de diccionario/hashmap para buscar elementos por ID? Sería lógico que lo hicieran, pero quién sabe. Sería bueno si pudiéramos vincular y evento/función a un elemento al mismo tiempo que se está creando: sin búsqueda, y sin demora. – mpen