добавление идентификаторов к объектам Raphael - PullRequest
4 голосов
/ 11 декабря 2011

У меня есть довольно большая карта, состоящая из путей Рафаэля, которые я пытаюсь сделать доступными для некоторых jquery ajax-скриптов для заполнения.Я пытался добавить идентификатор или что-нибудь, чтобы сделать его доступным из jquery организованным способом.

Поскольку я новичок в Рафаэле, я не могу найти хороший способ достижения этого.Я пытался использовать .data (), чтобы добавить идентификатор для каждой точки, скажем, "seat_1", "seat_2" и т. Д., Но пока безуспешно.

как мне организовать организацию этого кода, чтобы яможет манипулировать этим путем зацикливания?Я понимаю, что это довольно открытый вопрос, но любое предложение очень ценится

Демо здесь: http://www.sam -sys.in / demo / pushparaj / ticketreservation /? Page_id = 203

var path_gs = rsr.path("M5.834,698.336c-3.217,0-5.833,2.615-5.833,5.831 c0,3.215,2.616,5.833,5.833,5.833c3.219,0,5.835-2.618,5.835-5.833C11.669,700.951,9.053,698.336,5.834,698.336"); 
path_gs.attr({"clip-path": 'url(#SVGID_2_)',fill: '#777675',parent: 'group_a','stroke-width': '0','stroke-opacity': '1'}).data('id', 'path_gs');

, который генерирует

<path style="stroke-opacity: 1; " fill="#008000" stroke="#000000" d="M5.834,698.336C2.6169999999999995,698.336,0.0009999999999994458,700.951,0.0009999999999994458,704.167C0.0009999999999994458,707.3820000000001,2.6169999999999995,710,5.834,710C9.052999999999999,710,11.669,707.382,11.669,704.167C11.669,700.951,9.053,698.336,5.834,698.336" stroke-width="0" stroke-opacity="1"></path>

Ответы [ 2 ]

9 голосов
/ 16 декабря 2011

Ну, вот как я это делаю.Сначала я пишу все пути в объекте, например:

var paths = {
    path1: 'the paths coordinates',
    path2: 'the paths coordinates',
    path3: 'the paths coordinates',
}

Затем вы просто циклически проходите все пути, устанавливая координаты для каждого пути и присваивая им идентификатор (это внутренний идентификатор Рафаэля):

for(path in paths){
   var newpath = paper.path(paths[path]);
   newpath.attr({options})
   newpath.id = path;
}

Теперь, если вы хотите получить один из этих элементов, вы можете использовать следующую функцию Рафаэля:

var thisPath = paper.getById('path1');

Таким образом, вы можете использовать путь на любом из Рафаэляметоды.Итак, если вам нужно получить узел в куполе, вы можете сделать следующее:

var node = thisPath.node

Но если вам нужно оживить путь, вам лучше использовать метод анимации Рафаэля, или если вам нужно изменитьattibutes метод attr.

thisPath.animate(.....)

Если вам нужно применить некоторые изменения ко всем путям, вы можете использовать:

paper.forEach(function(thisArg))

, вам нужно передать функцию для запуска на каждом элементеи thisArg ссылается на элемент на каждой итерации

И, возможно, вы захотите взглянуть на множества Рафаэля, которые могут быть полезны для использования методов в группах элементов.Если вам нужна помощь с использованием этих функций, просто дайте мне знать, и я сделаю все возможное, чтобы помочь вам.Bye!

2 голосов
/ 11 декабря 2011

Вы можете просто поместить их в массив:

var pathArray = new Array();
var path_gs = rsr.path("path coords");
pathArray.push(path_gs); 

Затем перебрать pathArray.

Другой вариант - группировать их в комплекты .

...