This is not the same as using classes to refer to a group of objects, but I wrote a patch against Raphael to allow named sets. Just call paper.set('uniqueID', element1, element2, ...) . Elements contain an array of groups with each group to which they were assigned, and the upper Raphael document has a dictionary of groups to which a unique identifier is entered.
The following test code shows how you can apply a hover handler to a named set and use the hover callback to turn all group members black on hover:
var marker1 = paper.circle(50, 20, 10).attr({'fill' : '#ff0000'}); var marker2 = paper.circle(100, 20, 10).attr({'fill' : '#ff0000'}); var marker3 = paper.circle(150, 20, 10).attr({'fill' : '#ff0000'}); var marker4 = paper.circle(200, 20, 10).attr({'fill' : '#ff0000'}); var s = paper.set('setID', marker1, marker2); s.push(marker3, marker4); s.pop(); // If marker 1, 2, or 3 is hovered, act on whole group s.hover(function() { for (var i = 0, ii = this.groups.length; i < ii; ++i) { var set = this.paper.groups[this.groups[i]]; for (var j = 0, jj = set.items.length; j < jj; ++j) { set.items[j].attr({'fill' : '#000000'}); } } });
David Eads Aug 04 '11 at 15:39 2011-08-04 15:39
source share