2013-06-08 3 views
1

У меня есть код Рафаэля, который динамически генерирует разные кнопки. Затем я регистрирую функцию для этих кнопок, и мне нужно определить, какая конкретная кнопка была нажата.Как определить, какая кнопка была нажата в Рафаэле?

В Flash/AS3 вы можете получить имя кнопки, вызывающей функции, написав что-то вроде этого:

function myFunction (e:MouseEvent){ 
     trace (e.currentTarget.name); 
} 

является ли подобный способ достижения этой цели в Рафаэль?

Спасибо.

ответ

0

Прежде всего, поскольку вы используете Raphael, я предполагаю, что вы создаете пользовательские кнопки с объектами Raphael (т. Е. Rect).

OK вы можете сделать следующее:

  1. Создать 2 глобальные переменные, один держать count динамически созданной кнопки, другой держать id вашей кнопки в случае щелчка.
  2. Каждый раз, когда ваш объект Raphael создается как кнопка, назначьте ему идентификатор с помощью функции data().

Пример:

// global vars 
var count = 0; 
var id = 0; 


// your code 
var paper = Raphael(0, 0, 1000, 1000); 
var button = paper.rect(100, 100, 60, 20, 10).attr({fill: 'red'}); 
var text = paper.text(130, 110, "Submit").attr({fill: '#fff'}); 

count++; 

button.data("id", count); 

// some more code 

button.click(function() 
{ 
    id = this.data("id"); 
}); 

Good Luck

+1

Спасибо, это, кажется, работает хорошо. Я также нашел другое использование глобальных варов, которые работают, и назначил их кнопке «button.node.setAttribute (« id », count)», и это, похоже, работает нормально. Я обнаружил, что это становится идентификатором элемента DOM, который весьма полезен. – gatotkaca

+1

Вы должны принять ответ, чтобы люди ответили на ваши ответы LATER. – Gago

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