事件传播是从子元素到父元素发生的。
看起来您的第一行正在处理对子 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 和父 div使用方法,如下所示:
$(document).on('click','#addCompany_map', function (e) {
e.stopPropagation();
});
$(document).on('click','#addCompaniesModal', function(){
});