事件傳播從子元素髮生到父元素。
它可能看起來像你的第一行是處理點擊子div,但你指定的方式實際上處理點擊文檔級別(因爲你的選擇器是$(document)
),它只調用方法,如果它發生在子div(on('click','#addCompany_map'
部分)。由於該文檔是addCompaniesModal
div的父項,因此在點擊處理程序將在addCompaniesModal
div之後觸發。
爲了這個工作,你需要更改代碼這樣:
$('#addCompany_map').click(function (e) {
e.stopPropagation();
});
$('#addCompaniesModal').click(function(){
});
編輯:
我在你的一些評論認爲,主要見過您使用$(document).on('click', ...
方法的原因是因爲您要動態添加子div。
在這種情況下,有兩種可行的方法來處理您的問題。
第一種方法是讓您也動態添加子div處理程序,並在刪除時解除綁定。你可以使用這種方法:
function dynamicallyAddChildren(){
var oldChildDiv = $('#addCompany_map');
if (oldChildDiv.length > 0)
oldChildDiv.off('click', handleChildDiv);
// remove old child if needed and add new child divs
newChildDiv.on('click', handleChildDiv);
}
function handleChildDiv(e){
//do something
e.stopPropagation();
}
$('#addCompaniesModal').click(function(){
});
第二種方法是使用$(document).on('click', ...
方法既孩子和家長的div像這樣:
$(document).on('click','#addCompany_map', function (e) {
e.stopPropagation();
});
$(document).on('click','#addCompaniesModal', function(){
});
我已根據您的一些評論對我的答案進行了更新,因此請檢查一下。 –