我在使用 jQuery 的 clojurescript 中,但我认为 cljs 和 js 的答案应该是相同的。
我有一个辅助函数,它创建一个锚元素,然后在其中放置一个图标元素。我的锚对按钮类型有一个独特的类。
当我做类似的事情时
$('.my-btn-type').click(function(e) {console.log(e.target)});
- 如果单击图标则打印(即使处理程序在父级上)
- 如果仅单击锚点,则打印
我经常遇到一个问题,即由锚点包裹的图标是事件目标,而不是附加了处理程序的锚点。我在我的处理程序函数中需要的锚元素中使用数据属性。这迫使我手动检查 event.target 是图标还是锚点,然后手动冒泡事件或继续前进。
这似乎很骇人听闻,而且很痛苦。必须有一种简单的方法来附加处理程序,在 jQuery、js 或 clojurescript 中,它只会调用处理程序绑定到的元素。我该怎么做呢?
编辑:
使用“this”是我需要的,但在 clojurescript 中需要 this-as 宏。该线程有一个示例在此处输入链接描述