2013-04-14 158 views
5

我想點擊一個div時點擊一個事件,但我不希望點擊該div上的特定鏈接時點擊該事件:點擊一個除了鏈接的div上的點擊事件

我的JS

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

//Or 

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

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

我的HTML

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

這裏是jsfiddle

編輯:其實我真正的代碼是「」的方法,我已經嘗試過stopPropagation但它不會在這種情況下工作

+0

可能的[這個問題](http://stackoverflow.com/questions/2244320/jquery-click-event-propagation) –

回答

6

添加到您的JS:

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

Your fiddle updated

+0

重複其實我真正的代碼是「On」方法,我已經嘗試過stopPropagation,但它不起作用,在這種情況下 – Anas

+2

@Anas我udated小提琴... http://jsfiddle.net/bruscopelliti/SjDdN/10/它甚至可以使用on()方法...檢查出來 – Bruno

4

爲了不必重複代碼停止執行您爲div放入的每個鏈接,可以使用stopPropagation

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

這樣就停止了執行他們通常,如果他們是#myDiv專區內的方式做所有鏈接(<a>)。

0

這也可能工作

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


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

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