2012-03-03 12 views

Respuesta

8

¿Evento práctico burbujeo?

Con jQuery o sin él (teniendo en cuenta que puede manejar eventos borrosos sin utilizar una biblioteca) existen varios escenarios en los que le gustaría estructurar su código para aprovechar el burbujeo.

Un ejemplo: digamos que tiene una página donde los elementos se crean dinámicamente, pero desea procesar un clic en esos elementos. No se puede vincular un controlador de eventos directamente a ellos antes de que existan, pero vincular a los controladores individuales cuando se crean es un poco molesto. En su lugar, vincula un manejador de eventos a un objeto contenedor: los eventos de clic aparecerán desde los elementos individuales hasta el contenedor, pero aún puedes decir en qué elemento se hizo clic: jQuery lo hace fácil si estás usando la sintaxis apropiada de .on(), o .delegate() (o incluso .live() si tiene una versión realmente antigua de jQuery) porque establece this en el elemento cliqueado.

<div id="someContainer"></div> 

$("#someContainer").on("click", ".dynamicElement", function() { 
    // this is the element, do something with it 
}); 

Esto dice que el clic de un elemento con la clase "dynamicElement" que es un hijo de la "someContainer" div hacer algo. Funcionará independientemente de si el elemento "dynamicElement" existía en la carga de la página, se agregó más tarde en respuesta a alguna otra acción del usuario o tal vez se cargó con Ajax.

+0

gracias nnnnnn, he estado usando regularmente el ejemplo particular que mencionas. Me pregunto si podrías compartir otros también. ¡Gracias! –

+1

... Me imagino que esto también es más eficiente, registrar un único oyente y registrar muchos. –

1

Agrego imágenes dinámicamente a un div, planeo usar el evento de burbujeo para capturar eventos de carga en el div que contiene.

+0

El 'onload' es para saber cuándo la imagen fue realmente representada en la pantalla? ¿Puedes proporcionar un fragmento de código? –

+1

es correcto, es cuando se ha procesado, por lo que puede establecer display = 'inline' para mostrar la imagen. Esto normalizará lo que el usuario ve antes de que la imagen se haya descargado (en lugar de pequeñas imágenes lindas de la gente del navegador). Lo siento todavía no hay fragmentos. –

+0

- @ pure_code, ¿puedes explicar por qué tu ejemplo califica como un evento burbujeante? Quiero votar su respuesta, pero me gustaría asegurar que sea lo suficientemente útil para los visitantes futuros primero. –

Cuestiones relacionadas