Diferencia entre revisiones de «Usuario:Juanda/jQuery/Eventos»
De WikiEducator
(→Como funcionan los eventos en jQuery) |
|||
Línea 64: | Línea 64: | ||
<div class="slide"> | <div class="slide"> | ||
− | ==Asociación de DOM y eventos | + | ==Asociación de DOM y eventos== |
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | === | + | ===Métodos bind(), live() y delegate() === |
− | * | + | *En la versión de jQuery 1.7 han intentado unificar las APIs de manejo de eventos en los métodos on() y off(). |
+ | *Estos métodos sustituyen a los antiguos bind(), delegate() y live(). | ||
+ | *[http://www.masquewordpress.com/jquery-delegate-vs-live-vs-bind-vs-on/| Información del resto de métodos] | ||
</div> | </div> | ||
Línea 75: | Línea 77: | ||
<div class="slide"> | <div class="slide"> | ||
− | ===Método on() === | + | ===Método on() - Introducción === |
*'''$(elements).on(events [, selector] [, data], handler);''' | *'''$(elements).on(events [, selector] [, data], handler);''' | ||
− | + | *Las funciones para eventos vistas hasta ahora, como click, son atajos a la función on(): | |
+ | <source lang="javascript"> | ||
+ | // Asignar un manejador de eventos usando click | ||
+ | $("#header a").click(function() { | ||
+ | // manejar el evento | ||
+ | }); | ||
+ | |||
+ | // Asignar un manejador de eventos usando on | ||
+ | $("#header a").on("click", function() { | ||
+ | // manejar el evento | ||
+ | }); | ||
+ | </source> | ||
+ | Estas dos construcciones son equivalentes, pero on() permite hacer muchas más cosas... | ||
</div> | </div> | ||
<div class="slide"> | <div class="slide"> | ||
− | === | + | <div class="slide"> |
− | *Si | + | |
− | + | ===Método on() - Ventajas === | |
+ | *Permite usar un mismo manejador de eventos para múltiples elementos html suscribiendo el manejador a un elemento padre<br/> | ||
+ | |||
+ | *Dado el siguiente código html: | ||
+ | <source lang="html4strict"> | ||
+ | <div id="content"> | ||
+ | <a href="#">enlace1</a> | ||
+ | <a href="#">enlace2</a> | ||
+ | <a href="#">enlace2</a> | ||
+ | </div> | ||
+ | Si queremos asignar el mismo manejador de eventos a todos los elementos <a>, podemos hacerlo de la siguiente forma: | ||
+ | <source lang="javascript"> | ||
+ | $("#content").on("click", "a", function() { | ||
+ | // manejar el evento | ||
+ | // $(this) apunta al <a> que ha generado el evento | ||
+ | }); | ||
+ | </source> | ||
+ | Esto tiene varias ventajas: | ||
+ | |||
+ | * Sólo se crea una única función, independientemente del número de elementos <a> que tengamos, reduciendo el consumo de recursos. | ||
+ | *Es válido para elementos que no existen todavía. Si apareciese un nuevo elemento <a> dentro del <div>, automáticamente estaríamos manejando su evento click. Esto es especialmente útil cuando generamos html dinámicamente. | ||
+ | |||
+ | |||
</div> | </div> | ||
</div> | </div> |
Revisión de 07:57 12 nov 2012