2011-06-28 14 views
5

Si coloca un .click() en un elemento div y obtiene un elemento de entrada en el div ... ¿cómo puede omitir el .click() si el usuario hace clic en el ¿entrada?haga clic - solo en onclicks "directos"

El div.click() sólo tiene que activar cuando el usuario haga clic en el interior del div, pero fuera del elemento de entrada

<div style="width:400px; height:200px"> 
<input type="text" style="width:50px" /> 
</div> 

Respuesta

7

tiene dos opciones:

adjuntar un manejador de evento para el click elemento de entrada y evitar que el evento burbujeando llamando event.stopPropagation()[docs]:

$('input').click(function(event) { 
    event.stopPropagation(); 
}); 

O

Inspeccione el event.target[docs] en el controlador de eventos click conectado al div si el objetivo es el elemento input o no. Algo así como:

if(event.target.nodeName !== 'INPUT') { 
    // do something 
} 
+0

nunca supo de 'event.stopPropagation();' muy agradable, 1 = P –

0

puede utilizar esto:

if(event.toElement != this) 
    return;