【发布时间】:2018-10-18 01:27:00
【问题描述】:
说,我有
HTML:
<div onclick="parent()">
<div onclick="child()"></div>
</div>
SCRIPT: {
function parent() {
console.log("I'm your father");
}
function child() {
console.log("You're not my father");
}
在这种情况下,如果我点击子元素,它的父元素也会被点击,所以 parent() child() 都会被调用。如何在不点击其父级的情况下仅调用 child()?
【问题讨论】:
-
Event.stopPropagation()(另外,最好在 Javascript 中分配处理程序而不是 HTML 属性 - 这和eval一样糟糕) -
@CertainPerformance 你的意思是我不能使用 onclick, ng-click... 绑定功能做 DOM?我应该使用一堆 JQuery 吗?
-
在性能方面可能是正确的,但是,与一堆 jquery 选择器相比,维护不是那么容易吗?
-
@kispi 没有在你的问题中提到
ng-click,但内联onclick不好。 -
@kispi
ng-click与onclick属性不同。问题不在于性能——问题在于代码的可读性和可维护性。内联事件处理程序本质上是 HTML 标记中的eval- 它们是不好的做法,会导致代码分解不良、难以管理。而是使用 Javascript 附加处理程序。 (不,jQuery 绝对不需要仅仅分配一个处理程序) 将展示内容与内容分开:将内容保存在 HTML 中,将 Javascript 保存在 Javascript 中。
标签: javascript html dom