2013-03-20 92 views
0

我在使用jQuery的clojurescript,但答案应该是相同的cljs和js我认为。在jQuery中,如何将事件传递给父锚?

我有一个辅助函数,它创建一个锚元素,然后在其中放置一个图标元素。我的锚点有一个类型为按钮的独特类。

当我这样做

$( '我-BTN型'。)点击(函数(E){执行console.log(e.target)})。

  • 打印如果图标点击(即使处理器是在父)
  • 打印如果只锚点击

我经常有其中由包裹图标的问题锚点是事件目标,而不是附加处理程序的锚点。我在我的处理函数中需要的锚元素中使用数据属性。这迫使我手动检查event.target是图标还是锚点,然后手动冒泡事件或向前移动。

这看起来很骇人,而且是一种痛苦。在jQuery,js或clojurescript中必须有一个简单的方法来附加处理程序,它只会调用处理程序绑定的元素。我该怎么做呢?

编辑:

使用“本”是我需要什么,但在clojurescript的这个,因为需要宏。这个线程有一个例子enter link description here

+3

'this'总是引用您绑定的事件的元素。 – 2013-03-20 17:40:32

+0

所以问题是,点击图标时会触发事件吗? – yoshi 2013-03-20 17:41:51

+0

我没有意识到是这种情况。很高兴知道。不幸的是,我一直无法从clojurescript访问“this”对象。也许它保证另一个线程,如果使用“this”是做我想做的事的惯用方式。 – 2013-03-20 17:43:07

回答

0

如果我理解它的权利,好像你连接锚点和图标的点击事件。

或者锚点和图标具有相同的类名称。

e.g:

<a href="#" class="my-btn-type" > 
    <img src="../img/icon.png" class="my-btn-type" /> 
</a> 
+0

我只在锚上有“my-btn-type”以及我需要访问的数据属性。当我点击锚点内的图标时,它仍然会触发事件,但显然像$(e.target).data(“my-data”)这样的函数的结果不能正确执行,因为图标没有锚定的数据属性。我不想将所有的数据属性都添加到我过去完成的两个元素中。 – 2013-03-20 17:55:28

+0

你可以发布一些更多的代码,所以我可以看看,有一个更好的主意吗? – DanielDMO 2013-03-20 18:03:08

相关问题