В Рафаэле все элементы рисования (фигуры, линии, текст и т. Д.) Существуют только как часть охватывающего бумажного объекта. По сути, для них нет иерархической структуры. К сожалению, ни для одной из этих фигур нет атрибута текста. Таким образом, текстовый узел не может быть «присоединен» к элементу формы в правильном смысле.
Однако вы можете использовать узел 'Set', чтобы создать видимость текстового узла, прикрепленного к фигуре. Набор - это массив элементов, в которых преобразования (перевод, вращение и т. Д.) Могут быть применены ко всем элементам за одну операцию. Таким образом, если вы создали набор, содержащий один прямоугольник и один текстовый узел, вы можете рассматривать этот элемент набора как единую сущность. Затем вы можете создать второй экземпляр этого набора и обработать его по-другому. Таким образом, хотя все текстовые элементы все еще технически принадлежат бумажному объекту, они ведут себя (и выглядят) так, как будто они принадлежат прямоугольнику.
Например:
var paper = Raphael(0, 0, 400, 400);
for (var i = 0; i < 10; i++)
{
var group = paper.set();
group.push(paper.rect(10, 10, 50, 20));
group.push(paper.text(35, 18, "Hello"));
group.translate(Math.random() * 350, Math.random() * 380);
group.rotate(Math.random() * 90);
}
В качестве другого подхода я также добился разумного успеха в создании большого количества отдельных бумажных объектов на странице. Но это, вероятно, не то, куда вы хотите пойти.