触发子元素的onclick事件,但不是父元素

时间:2013-12-10 21:03:00

标签: javascript jquery onclick event-propagation

我有一些嵌套元素,每个元素都有一个onclick事件。在大多数情况下,我希望在用户单击子项时触发这两个事件(触发父事件和子事件 - 默认行为)。但是,至少有一种情况我想触发孩子的onclick事件(来自javascript,而不是用户的点击),而不是父母的。如何防止此事件触发父事件?

enter image description here

我的意思是:

用户点击A: A的onclick会点击。
用户点击B: B的onclick fires,A的onclick也会触发 手动触发B的点击: B点火,A点不亮(这个是问题)

2 个答案:

答案 0 :(得分:4)

对孩子使用triggerHandler;这不会让事件通过DOM传播:

  

使用.triggerHandler()创建的事件不会冒泡DOM   层次结构;如果它们不是直接由目标元素处理的,   他们什么都不做。

答案 1 :(得分:3)

方法1:

您可以使用stopPropagation()方法来防止事件冒泡。

$('.element').on('click', function(e){
e.stopPropagation();
});

查看此DEMO

方法2:

您可以使用return false来阻止事件冒泡,这也会阻止默认操作。

$('.element').on('click', function(e){
//--do your stuff----
return false;
});