如何根据常见的类/对象名称而不是Framer JS中的唯一层来侦听事件?

时间:2015-04-12 01:46:46

标签: javascript jquery coffeescript framerjs

我想返回用户点击的对象的唯一名称,但我找不到解决方案。以下是我在CoffeeScript中尝试实现的内容。

$(".class").click(function(){
    alert("You clicked on this specific element");
});

我能找到的最好的例子如下所示,但每一层都是唯一的,因此无法将它们分配到不同的层。

layerA.on Events.Click, (event, layer) ->
    print "This layer was clicked", layer.name

我可以单独听取每一层上的事件,但这会违反DRY原则。

2 个答案:

答案 0 :(得分:1)

我已经设法弄明白了。这是以下解决方案。

创建一个数组并将所有图层名称存储在

layerArray = [layer, layer2, layer3, layer4]

创建一个在触发click事件时调用的函数,传入图层对象和图层索引

callFunc = (layer, index) ->
    print index

循环遍历数组中的每个图层,并将单击的图层传递给函数

for layer, index in layerArray
    layer.on(Events.Click, callFunc)

答案 1 :(得分:0)

$(".class").click(function(e){
    alert(e.target); // The DOM element that fired this event.
});

具体见https://api.jquery.com/click/#click-handler

  

.click(处理程序)
  handler类型:Function(Event eventObject)
  每次触发事件时执行的函数。

http://api.jquery.com/category/events/event-object/

  

event.target
  启动事件的DOM元素。