La delegación de eventos permite vincular un controlador de evento a unelemento contenedor (por ejemplo, una lista desordenada) en lugar de múltiples elementos contenidos (por ejemplo, los ítems de una lista).jQuery realiza este trabajo fácil a través de $.fn.live
y $.fn.delegate
. En lo posible, es recomendable utilizar .fn.delegate
en lugar de .fn.live
, ya que elimina la necesidad de una selección y su contexto explicito reduce la carga en aproximadamente un 80%.
Además, la delegación de eventos permite añadir nuevos elementos contenedores a la página sin tener que volver a vincular sus controladores de eventos.
// mal (si existen muchos items en la lista)
$('li.trigger').click(handlerFn);
// mejor: delegación de eventos con $.fn.live
$('li.trigger').live('click', handlerFn);
// mucho mejor: delegación de eventos con $.fn.delegate
// permite especificar un contexto de forma fácil
$('#myList').delegate('li.trigger', 'click', handlerFn);