2015-04-12 8 views
1

Я хотел бы вернуть уникальное имя объекта, на который пользователь нажал, но я не могу найти решение. Ниже я пытаюсь достичь, но в CoffeeScript.Как я могу прослушивать событие на основе общего имени класса/объекта вместо уникального уровня в Framer JS?

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

Лучший пример, который я смог найти показано ниже, но каждый слой является уникальным, поэтому они не могут быть отнесены к различным слоям.

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

Я могу прослушивать событие на каждом слое индивидуально, но это нарушит принцип DRY.

ответ

1

Мне удалось выяснить это сам. Ниже приведено решение.

Создать массив и хранить все имена слоев внутри

layerArray = [layer, layer2, layer3, layer4] 

Создайте функцию, которая будет вызываться, когда событие щелчка срабатывает, переходя в объект слоя и индекс слоя

callFunc = (layer, index) -> 
    print index 

Цикл по каждому слою в массиве и передать щелкнул слой функции

for layer, index in layerArray 
    layer.on(Events.Click, callFunc) 
0
$(".class").click(function(e){ 
    alert(e.target); // The DOM element that fired this event. 
}); 

См https://api.jquery.com/click/#click-handler специально

.click (обработчик) Тип
обработчика: Функция (Event объектСобытие)
Функция выполняется каждый раз, когда вызывается событие.

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

event.target
DOM-элемент, который инициировал событие.

+0

Эй, Дэвид, спасибо за ваш ответ. Мне удалось выяснить это раньше, и в конце концов я написал ответ другим, чтобы посмотреть, на случай, если у них будет такая же проблема. Это вопрос Framer.js, и он использует coffeescript. Я новичок в этом и понял, что мне нужно перебирать значения массива, чтобы получить конкретный индекс, который был нажат. jQuery делает это несколько иначе. В любом случае, еще раз спасибо за вашу помощь! – Raja

 Смежные вопросы

  • Нет связанных вопросов^_^