2012-08-28 6 views
5

Estoy usando la función de jQuery .on() para adjuntar algún comportamiento en el evento click en un objeto, digamos span.¿Cómo obtengo el selector original usando la función jQuery's on() con un filtro?

Mi disposición es como la siguiente:

$('#container').on('click', 'span', function() { 
    // do stuff 
}); 

Dentro de esta función, es thisspan. ¿Cómo obtengo #container?


ejemplo completo: http://jsfiddle.net/aymansafadi/Nk3p9/

<div id="container"> 
    <span>Click Me!</span> 
</div>​ 

-

$('#container').on('click', 'span', function() { 

    var span = $(this), 
     div = false; // This is what I need 

    console.log(span); 
});​ 
+1

Un ID sólo puede aparecer una vez, así que ... '$ ('# contenedor')'. ;-) –

+1

O guarde en caché su selector ... – elclanrs

Respuesta

8

Uso event.delegateTarget

$('#container').on('click', 'span', function(e) { 

    var span = $(this), 
    div = e.delegateTarget; 

    console.log(div); 
}); 

DEMO

+4

Me encanta cuando alguien crea un montón de respuestas "no posibles" como esa. –

+0

¡Gracias! Eso era exactamente lo que estaba buscando. –

-1

La forma más fácil sería simplemente usar span.parent().

+2

¿Qué sucede si el contenedor es un antecesor? –

+2

¿Más fácil que '$ ('# contenedor')'? Jeje. –

+0

@mootinator tal vez/tal vez no, pero tiene menos caracteres. –

Cuestiones relacionadas