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 originalid_wid=$(this).parent().parent().parent().parent().attr('id_widget')
por algo asi:
Código Javascript
:
Ver originalid_wid=$(this).parent('.selector').attr('id_widget')
Espero haber sido bastante claro.
Saludos.