2013-12-03 81 views
0

我遇到了事件冒泡的問題。如何在div中添加鏈接?

我有類似HTML的

<div id='title-bar1'> 
    title bar 
    <div class='editDiv'> 
     <a class='edit' href='#'>Edit</a> 
    </div> 
</div> 


$('#edit').on('click', function(e){ 
    e.stopPropagation(); 
     //do B 
}) 


$('#title-bar1').on('click', function(e){ 
    e.preventDefault(); 
    //do A  
}) 

title-bar1是包裝edit鏈接一個div。我的問題是,當我點擊我的edit鏈接時,我似乎無法看到do B。它總是do A。我添加stopPropagation,但仍然無法正常工作。有人可以幫我解決這個問題嗎?非常感謝!

+1

'edit'是一個類,而不是一個id。選擇器應該是'$('。edit')'。 –

+1

您沒有ID =「編輯」類的控件。也許你的意思是'$('。edit')'? –

+0

對不起,這是一個愚蠢的錯誤。感謝所有的幫助。 – FlyingCat

回答

3

我可能是錯誤的,我相信別人會糾正我,但是,根據你的代碼,你有「編輯」作爲一個類。

當引用一個類將是$( '修改'。)的onclick

在CSS中,修改具有一個id =編輯的元素,一個會做#edit {顏色:紅;}。

如果一個類將會是.edit {color:red; }

因此,停止進度的功能永遠不會被啓動。

1
<div id='title-bar1'> 
    title bar 
    <div class='editDiv'> 
     <a class='edit' href='#'>Edit</a> 
    </div> 
</div> 


$('.edit').on('click', function(e){ 
    e.stopPropagation(); 
     //do B 
}) 


$('#title-bar1').on('click', function(e){ 
    e.preventDefault(); 
    //do A  
}) 
1

變化:

$('#edit').on('click', function(e){ 
e.stopPropagation(); 
    //do B 

})

到:

$('.edit').on('click', function(e){ 
e.stopPropagation(); 
    //do B 

})

類=。 //選擇之前

ID =#//之前選擇

希望這有助於!

1
<div id='title-bar1'> 
    title bar 
    <div class='editDiv'> 
     <a class='edit' href='#'>Edit</a> 
    </div> 
</div> 


$('.edit').on('click', function(e){ 
// ^edit is a class not an id 
    e.stopPropagation(); 
     //do B 
}) 


$('#title-bar1').on('click', function(e){ 
    e.preventDefault(); 
    //do A  
})