我有一些嵌套元素,每个元素都有一个onclick事件。在大多数情况下,我希望在用户单击子项时触发这两个事件(触发父事件和子事件 - 默认行为)。但是,至少有一种情况我想触发孩子的onclick事件(来自javascript,而不是用户的点击),而不是父母的。如何防止此事件触发父事件?
我的意思是:
用户点击A: A的onclick会点击。
用户点击B: B的onclick fires,A的onclick也会触发
手动触发B的点击: B点火,A点不亮(这个是问题)
答案 0 :(得分:4)
对孩子使用triggerHandler
;这不会让事件通过DOM传播:
使用.triggerHandler()创建的事件不会冒泡DOM 层次结构;如果它们不是直接由目标元素处理的, 他们什么都不做。
答案 1 :(得分:3)
您可以使用stopPropagation()
方法来防止事件冒泡。
$('.element').on('click', function(e){
e.stopPropagation();
});
查看此DEMO
您可以使用return false
来阻止事件冒泡,这也会阻止默认操作。
$('.element').on('click', function(e){
//--do your stuff----
return false;
});