查询 Raphael 对象的类
我使用 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'));
是否有特殊原因导致此无效? 是否有(其他)方法来查询类属性?
谢谢, 阿德里安
I have this array of rects using jQuery and 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);
}
I can successfully query various attributes, like:
alert(squares[0].attr('x'));
or
alert(squares[0].attr('width'));
but not:
alert(squares[0].attr('class'));
Is there a special reason for which this is not valid?
Is there an (other) way to query the class attribute?
Thanks,
Adrian
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SVG 中的类与其他一切 - 在处理 SVG 和 IE 的 VML 的 Raphael 中,事情变得更加棘手。
首先,它们位于页面的 DOM 元素(Raphael 的输出)上,而不是 Raphael JS 对象本身。您可以使用Raphael的
.node
来获取实际的DOM路径(例如使用jQuery,$(squares[0].node).someJqueryFunction();
),但是这种排序由于上述原因,最好尽可能避免发生这种情况。 此相关问题包含包含更多信息的答案。如果您想使用类来存储数据(例如,使用“活动”、“非活动”类作为开关),最好使用 Raphael 的
.data
函数 其中 显然用于存储任意值。 此相关问题包含包含更多信息的答案。Classes in SVG aren't quite the same as classes in everything else - and in Raphael, which deals with SVG and IE's VML, things get even more hairy.
First of all, they're on the page's DOM element (Raphael's output) not in the Raphael JS object itself. You'd use Raphael's
.node
to get the actual DOM path (e.g. with jQuery,$(squares[0].node).someJqueryFunction();
) but this sort of thing is best avoided where possible for the above reasons. This related question has answers with more info.If you want to use classes to store data (e.g. like using 'active', 'inactive' classes as switches), you're best off using Raphael's
.data
function which apparently is for storing arbitrary values. This related question has answers with more info.