javascript - 嵌套在按钮中的元素的单击事件

标签 javascript html

这是一个简单的问题示例:

<body>
  <button id="parent"  onclick="alert('parent')">
      <span id="child" onclick="alert('child')">Authenticate</span>
  </button>
</body>

在 Chrome 中,这会提示“child”然后是“parent”,但在 IE/FF 中我们只会得到“Parent”。

显然,这可以通过多种方式解决(将按钮更改为 div、删除 span 等),但我想知道是否有一种方法可以在不更改HTML。

谢谢!

PS:试过 JQuery 并且具有相同的行为。

最佳答案

正如@muistooshort 所说,在其他点击事件中处理点击事件似乎不自然。我还认为您必须重新考虑您的设计。

也就是说,您可以在主容器上处理一次单击事件,然后检查哪个元素是单击的来源

这将是要走的路,考虑到您的用例,imo:

$('your-button-container').click(function(event){
    console.log(event.originalEvent.srcElement);
});

event.originalEvent.srcElement 进行必要的检查并采取相应的行动。

编辑: 不使用 JQuery,它会像这样:

yourButtonContainer.addEventListener(function(event){
    console.log(event.srcElement);
});

关于javascript - 嵌套在按钮中的元素的单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11069410/

相关文章:

javascript - 如何在Vue中特定组件的范围内定义 `setInterval`?

css - 如何让内部 div 溢出父级?

javascript - 如何减少跑马灯循环的时间间隔?

html - flex 元素不包装

html - 防止contenteditable div中的图像被拖到另一个div

javascript - 电话号码验证 - 排除非重复分隔符

javascript - jQuery 一次加载 10 个项目

javascript - 识别列表中的 JavaScript 错误 700 "entries"

javascript - 根据 ul ID 将相同的类添加到子元素

javascript - 第二次点击手机后白色图标消失