2009-09-02 8 views
16

Me encanta el nuevo evento en vivo en jQuery 1.3. La pregunta que tengo es la actuación de este evento. Conozco las ventajas de usar Live Over Click/bind ('clic'), pero ¿hay algún impacto en el rendimiento para usarlo sobre click/bind ('click')?Diferencia de rendimiento entre .live ('clic', fn) y .click (fn) de jQuery

Si no, ¿por qué alguna vez usaría hacer clic o enlazar ('clic')?

+0

Dup: http://stackoverflow.com/questions/748076/using-live-benefits-similar-to-bind –

+0

creo que son diferentes preguntas como ésta se refiere únicamente a las diferencias de rendimiento y no en general. – MacAnthony

+0

@MacAnthony: lea la respuesta aceptada a esa pregunta, ahonda en las características de rendimiento de 'live' y' bind'. Es por eso que dupliqué esto: ya ha sido respondido. –

Respuesta

12

Si no, ¿por qué utilizarías alguna vez clic o bind ('click')?

Debido $.live() tiene algunas desventajas significativas

  • Los eventos en vivo no burbuja de la manera tradicional y pueden no ser dejaron de usar stopPropagation (Esto cambió en jQuery 1.4.4) o stopImmediatePropagation. Por ejemplo, tome el caso de dos eventos de clic - uno vinculado a "li" y otro "li a". Si se produce un clic en el ancla interior se activarán AMBOS eventos. Esto se debe a que cuando $ ("li"). Bind ("click", fn); está vinculado en realidad está diciendo "Cada vez que ocurre un evento de clic en un elemento LI - o dentro de un elemento LI - activa este evento de clic". Para detener aún más el procesamiento para un evento en vivo, fn debe devolver falso.
  • Los eventos en vivo actualmente solo funcionan cuando se usan contra un selector. Para el ejemplo , esto funcionaría: $ ("li a"). Live (...) pero esto no: $ ("a", someElement) .live (...) y tampoco lo haría: $ ("a"). Parent(). Live (...).
+0

También ciertos eventos no pueden ser capturados por .live() – MacAnthony

+6

live() admite stopProgation desde 1.4.4 – Chris

+0

estos no parecen muy significativos ... – Kevin

2

Ver this.

En cuanto a por qué alguna vez usaría hacer clic o vincular en lugar de en vivo, la respuesta es porque no necesita la funcionalidad adicional.

Cuestiones relacionadas