数据是通过JSON动态加载的,所以我必须使用.on
来加载.target
,因为有很多targets
,我必须在$.getJSON
内做一些事情,所以它有几个点击处理程序。
$('.container').on('click', '.target', function(e) {
e.preventDefault();
$.getJSON(myData, function(data, status) {
$('.another-element').on('click', 'a', function(e) {
e.preventDefault();
});
}
});
....问题是,当点击.another-element
时,它还会触发.target
的click事件,导致其中的所有函数重新出现。我该如何预防?
答案 0 :(得分:4)
假设.another-element
是.target
的孩子,请使用
e.stopPropagation();
中所述
阻止事件冒泡DOM树,防止任何父处理程序收到事件通知。
<强>更新强>
不,它不是孩子。一个单独的元素(兄弟)叠加在顶部。
您可以尝试检查目标
$('.container').on('click', '.target', function(e) {
if(e.target.classList.toString().indexOf('target') == -1){
return;
}
e.preventDefault();
$.getJSON(myData, function(data, status) {
$('.another-element').on('click', 'a', function(e) {
if(e.target.tagName != 'A'){
return;
}
e.preventDefault();
});
}
});