1

我想返回用户单击的对象的唯一名称,但我找不到解决方案。以下是我试图在 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 原则。

4

2 回答 2

1

我自己设法弄清楚了。这是下面的解决方案。

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

layerArray = [layer, layer2, layer3, layer4]

创建触发点击事件时调用的函数,传入图层对象和图层索引

callFunc = (layer, index) ->
    print index

循环遍历数组中的每一层并将点击的层传递给函数

for layer, index in layerArray
    layer.on(Events.Click, callFunc)
于 2015-04-13T00:25:31.520 回答
0
$(".class").click(function(e){
    alert(e.target); // The DOM element that fired this event.
});

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

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

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

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

于 2015-04-13T02:51:18.563 回答