Запрос класса на объекте Рафаэля - PullRequest
2 голосов
/ 15 июня 2011

У меня есть этот массив ректов с использованием jQuery и Raphael:

squares = [];
for (i = 0; i < 2; ++i) {
    var square = paper.rect(0 + 100*i, 0, 70, 70);
    square.node.idx = i;
    square.node.setAttribute('class', 'foo');
    squares.push(square);
}

Я могу успешно запрашивать различные атрибуты, например:

alert(squares[0].attr('x'));

или

alert(squares[0].attr('width'));

но не :

alert(squares[0].attr('class'));

Есть ли особая причина, по которой это недопустимо?Есть ли (другой) способ запроса атрибута класса?

Спасибо, Адриан

1 Ответ

1 голос
/ 21 февраля 2012

Классы в SVG не совсем такие же , как классы во всем остальном - и в Рафаэле, который имеет дело с SVG и IE VML, все становится еще более пугающим.

* 1004все, они находятся в элементе DOM страницы (вывод Рафаэля), а не в самом объекте Raphael JS.Вы бы использовали .node Рафаэля, чтобы получить фактический путь DOM (например, с jQuery, $(squares[0].node).someJqueryFunction();), но такого рода вещи лучше избегать, где это возможно, по указанным выше причинам. На этот связанный вопрос есть ответы с дополнительной информацией.

Если вы хотите использовать классы для хранения данных (например, как использование «активных», «неактивных» классов в качестве переключателей), вы лучшеотключить, используя .data функцию Рафаэля , которая , по-видимому, предназначена для хранения произвольных значений. На этот связанный вопрос есть ответы с дополнительной информацией.

...