在 Framer JS 中,如何根据通用 class/ 对象名称而不是唯一层来监听事件?
How can I listen for an event based on a common class/ object name instead of a unique layer in Framer JS?
我想return用户点击的对象的唯一名称,但我找不到解决方案。以下是我试图在 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原则。
我自己弄明白了。这是下面的解决方案。
创建一个数组并将所有图层名称存储在其中
layerArray = [layer, layer2, layer3, layer4]
创建一个触发点击事件时调用的函数,传入图层对象和图层索引
callFunc = (layer, index) ->
print index
遍历数组中的每一层并将点击的层传递给函数
for layer, index in layerArray
layer.on(Events.Click, callFunc)
$(".class").click(function(e){
alert(e.target); // The DOM element that fired this event.
});
具体见https://api.jquery.com/click/#click-handler
.click( handler )
handler Type: Function( Event eventObject )
A function to execute each time the event is triggered.
和http://api.jquery.com/category/events/event-object/
event.target
The DOM element that initiated the event.
我想return用户点击的对象的唯一名称,但我找不到解决方案。以下是我试图在 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原则。
我自己弄明白了。这是下面的解决方案。
创建一个数组并将所有图层名称存储在其中
layerArray = [layer, layer2, layer3, layer4]
创建一个触发点击事件时调用的函数,传入图层对象和图层索引
callFunc = (layer, index) ->
print index
遍历数组中的每一层并将点击的层传递给函数
for layer, index in layerArray
layer.on(Events.Click, callFunc)
$(".class").click(function(e){
alert(e.target); // The DOM element that fired this event.
});
具体见https://api.jquery.com/click/#click-handler
.click( handler )
handler Type: Function( Event eventObject )
A function to execute each time the event is triggered.
和http://api.jquery.com/category/events/event-object/
event.target
The DOM element that initiated the event.