javascript - onclick 处理程序并不总是在更新子元素时运行
问题描述
我有一排<a>
具有onclick
处理程序的元素:
<a onclick="selectCoin('MER');">
<div id="MER">
...
</div>
</a>
孩子的内部<div>
被不断地覆盖以更新按钮内的一些文本。更新是通过查询#MER
选择器并分配给 来完成的innerHTML
。我注意到如果元素在后台更新,onclick
处理程序并不总是运行。很多时候,我必须在hander 真正被调用<div>
之前点击它两到三遍。onclick
如果我将<div>
元素设为静态,则onclick
处理程序会始终如一且可靠地运行。
为什么更新<div>
孩子会导致onclick
处理程序停止工作?如何在更新按钮内容的同时解决此问题?
解决方案
要生成点击事件,元素必须接收 amousedown
后跟 a mouseup
。
如果元素在 之后消失mousedown
并被新元素替换,则不会发送单击事件。
您可以对元素进行自己的 mousedown/mouseup 检测<a>
,但如果元素内的任何内容都不是真正可点击的,则可以禁用子元素上的鼠标事件,以便它们都发生在<a>
元素上
在您的“MER” div 上:
style="pointer-events:none;"
工作小提琴:
推荐阅读
- python - 识别具有唯一 ID 的 ipywidgets(在 python 中)
- flask - 查询后后端烧瓶不重定向
- regex - 使用 Sublime 或 Google 表格查找匹配和替换?
- python - 'QuerySet' 对象没有使用 django 的属性'save'
- javascript - 递归分组嵌套的对象数组
- python - 如何将文本文件中的数字从小到大排序?
- java - Selenium 发送键 CTRL+C 会杀死 jar 应用程序,即使控制台运行它不是焦点也是如此
- vue.js - 我们如何覆盖 vue-storefront 组件
- c# - 当属性高于它时获取类名
- react-native - 反应本机中的不变违规错误FlatList