digamos que tenemos una estructura HTML de la siguientecaso Mastering burbujeante
<div id="container">
<div id="nested">
<span id="someElement"></span>
</div>
</div>
... y nuestra meta es tener un detector de eventos en el #container
única! Por lo tanto, nos atamos a un oyente (código de jQuery)
$("#container").on('click', function(event) {
alert("container was clicked");
});
que funciona, por supuesto, pero mi problema con este enfoque es que, ya que los eventos generalmente brotan, ese oyente también se disparará si realmente haga clic en #nested
o #someElement
. Mi solución actual a única manejar el clic cuando la #container
se hace clic es comparar this
con event.target
$("#container").on('click', function(event) {
if(this === event.target) {
alert("container was clicked");
}
});
Mi pregunta: ¿Es que considera "la mejor práctica"? ¿Hay una mejor manera con jQuery para lograr el mismo resultado "fuera de la caja"?
Ejemplo de acción: http://jsfiddle.net/FKX7p/
OMI, esta es la mejor práctica. – VisioN
@jSang: En realidad, los elementos internos no tienen ningún oyente al hacer clic. ¿Eso se considera la mejor práctica? unir cada elemento solo para detener la propagación? –
No veo ningún enfoque mejor tampoco, de hecho, estaba a punto de publicar eso como respuesta hasta que vi que ya tienes ese código. –