2013-10-15 18 views
6

Sto tentando di aggiungere un evento click su un elemento che si trova all'interno di un oggetto che ha già un evento click. Non voglio che l'evento li click venga attivato quando viene attivato l'evento click div.JQuery Fare clic all'interno di div

Ecco la jsfiddle di quello che sto cercando di fare. http://jsfiddle.net/2srUd/5/

Quando clicco sul .inside non voglio il #outside fare clic per sparare. Presumo che ho bisogno di annuncio di una non al selettore $ ("dentro".)

<script> 
    $(document).ready(function() { 

     $("#outside").click(function() { 
      alert("outside click"); 
     }); 

     $(".inside").click(function() { 
      alert("inside click"); 
     }); 

    }); 
</script> 
<ul> 
    <li id="outside" style="border:2px solid red; padding:20px;"> 
     <div class="inside" style="border:2px solid blue; ">Click This Div. I want to accept the inside click but not the outside click.</div> 
    </li> 
</ul> 

risposta

14

soluzione semplice:

$(".inside").click(function(e) { 
     e.stopPropagation(); 
     alert("inside click"); 
    }); 

http://api.jquery.com/event.stopPropagation/

Impedisce l'evento dalla zampillante DOM albero, impedendo agli eventuali gestori di parentesi di ricevere notifica dell'evento.

Fondamentalmente non si desidera che attivi il gestore di eventi del genitore, quindi si interrompe la propagazione.

+2

Ecco un violino. http://jsfiddle.net/cjmnn/ Aggiungi anche qualche spiegazione. – PSL

+0

Grazie, è esattamente ciò di cui avevo bisogno. – user2880764

+0

Questo non funziona per me solo il div esterno genera mai l'evento. l'unica differenza è che il mio div esterno è un nome di classe non un id se questo cambia qualcosa '

a
b
' – djack109

2

Basta fare: http://jsfiddle.net/2srUd/24/

$(document).ready(function() { 
     $("#outside").click(function() { 
      alert("outside click"); 
     }); 

     $(".inside").click(function() { 
      alert("inside click"); 
      return false; 
     }); 

    }); 
Problemi correlati