2013-04-14 17 views
5

voglio generare un evento quando clicco su un div, ma non voglio che evento di sparare se clicco su un link specifico su quel div:evento fuoco al clic su un div tranne un collegamento

mia JS

$("#myDiv").not("#myLink").click(function() { 
    alert("clicked"); 
}); 

//Or 

$("#myDiv:not(#myLink)".click(function() { 
    alert("clicked"); 
}); 

$("body").on('click', '#myLink', function(e) { 
    e.stopPropagation(); 
}); 

mio HTML

<div id="myDiv"> 
    <a href="#" id="myLink">Some link</a> 
</div> 

Ecco jsfiddle

EDIT: In realtà il mio codice reale è con "On " metodo, ho già provato stopPropagation ma non funziona in quel caso

+0

Può essere un duplicato di [questa domanda] (http://stackoverflow.com/questions/2244320/jquery-click-event-propagation) –

risposta

6

Aggiungi ai js:

$("#myLink").click(function(e) { 
    e.stopPropagation(); 
}); 

Your fiddle updated

+0

In realtà il mio vero codice è con metodo "On", ho già provato stopPropagation ma non funziona in quel caso – Anas

+2

@Anas ho ascoltato il violino ... http://jsfiddle.net/bruscopelliti/SjDdN/10/ funziona anche usando il metodo on() ... verificarlo – Bruno

4

Per non dover ripetere il codice che si arresta dall'esecuzione per ogni collegamento inserito in div, è possibile utilizzare stopPropagation.

$('#myDiv a').click(function(e) { 
    e.stopPropagation(); //stops default link action 
    //do your stuff 
}); 

Questo fermerà tutti i link (<a>) da eseguire il modo in cui avviene normalmente se sono all'interno del #myDiv div.

0

questo può anche funzionare

$("#myDiv").click(function (ev) { 
    alert("clicked"); 


}).children().click(function(e) { 
    return false; 
}); 

http://jsfiddle.net/SjDdN/7/

Problemi correlati