具有以下结构:
<div class="the-parent">
<div>
<a onClick="doParentStuff()">
<div>
<i onClick="doChildStuff()"></i>
</div>
</a>
</div>
</div>
现在,当单击子元素(图标)时,它会记录doChildStuff()
的内容,但之后也会记录doParentStuff()
的内容。
是否有一种方法可以仅在单击图标时调用doChildStuff
,而在单击the-parent
div中的其他内容时调用doParentStuff
?
2条答案
按热度按时间ttcibm8c1#
单击子项时,必须
stopPropagation
事件:xlpyo6sf2#
避免使用
Event.stopPropagation()
(除非您真的知道自己在做什么)。应用程序或第三方代码不应停止或阻止事件在应用程序层/组件中传播。
相反,更改逻辑以实现第三个函数(如
doStuff
),该函数将根据Event.target.closest()
匹配触发所需的函数另外,停止使用HTML内联
on*
属性处理程序。这样的代码很难维护和调试。JavaScript应该只在一个地方,那就是相应的标记或文件。请改用addEventListener。即使没有要求,如果您还想分离父处理程序,也只需将其放入
else
块中:一个二个一个一个