Добавление идентификатора в тег <circle>не работает - PullRequest
2 голосов
/ 25 сентября 2011

Я пытаюсь добавить атрибут id в тег <circle>, используя jQuery's .attr():

r.circle(x, y, 6).attr({fill: "#ff0000", stroke: "none", id: "cir1"}),

Проблема в том, что он добавляет атрибуты fill и stroke, но не id. Я знаю, потому что я смотрю на Google Chrome DEV, и он не показывает id!

Ответы [ 4 ]

1 голос
/ 25 сентября 2011

Согласно документации, вы не можете добавить id, используя attr.Смотрите здесь:

http://raphaeljs.com/reference.html#attr

Если вам нужен id в качестве хука, возможно, вы могли бы установить title, что разрешено.


В сторону:

Трудно сказать по документам, разрешено ли это, но, возможно, вы можете добавить id как пользовательский attr, поместив его в кавычки?

"id" : "cir1"
0 голосов
/ 26 сентября 2011

Это прекрасно работает для меня.

Доказательство: откройте эту тестовую страницу и откройте консоль разработчика. Вы увидите "yay 1 circle" в выводе, который является результатом этого кода JavaScript:

var head = $('circle:eq(1)');
head.attr({id:'yay'});
console.log(
  head[0].id,
  $('#yay').length,
  document.getElementById('yay').tagName
);

Из этого видно, что атрибут id является а) устанавливаемым для элемента DOM и б) работающим в качестве средства для доступа к элементу с помощью методов jQuery или DOM.

Можете ли вы предоставить работающий тестовый пример, возможно, с использованием Рафаэля, показывающий эту ошибку?

0 голосов
/ 25 сентября 2011

В некоторых случаях вам не нужен идентификатор.

Вы можете использовать ключевое слово this.

0 голосов
/ 25 сентября 2011

Очевидно, вы не можете установить идентификатор через атрибут.

Просто получите ссылку на узел и установите его напрямую.

r.circle(...).node.id = 'cir1';
...