Ver Mensaje Individual
  #9 (permalink)  
Antiguo 23/12/2010, 16:40
Avatar de masterpuppet
masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: JQUERY - Live provoca memory leaks?

Con delegate asignas un unico event handler para todo un set de elementos, cuando utilizas live asignas tantos event handlers como elementos tengas, por ejemplo en una lista donde tengas 12 li con live asignarias 12 event handlers a los que el browser debe atender, mientras que con delegate asignas un unico event handler a un padre de los li(cuanto mas cercano el padre mejor) podria ser el ul, cuando clickeas sobre un li el evento se propaga hacia arriba(bubble up!) hasta el ul este en ultima instancia lo maneja.
Otra razon para usar delegate sobre live, es que delegate utiliza por defecto los contextos de JQuery, con live escaneas el document, con delegate escaneas a partir del padre al que le estas asignando el handler, tomando como referencia el ejemplo anterior live buscaria en todo el document los li que coinciden, mientras que delegate buscaria los li a partir del padre, en nuestro ejemplo el ul.

Estos dos cambios deberian tener un cambio significativo en la performance de la aplicación.

Ahora voy a mirar bien tu codigo a ver que se puede optimizar, pero desde ya te digo que deberias cambiar estos:

Código Javascript:
Ver original
  1. id_wid=$(this).parent().parent().parent().parent().attr('id_widget')

por algo asi:

Código Javascript:
Ver original
  1. id_wid=$(this).parent('.selector').attr('id_widget')

Espero haber sido bastante claro.

Saludos.