johann philipp strathausen

berlin based indie maker

Raphael.js tooltip

This extension allows you to attach tool tips to Raphael SVG elements. They appear on mouse over.

Raphael.el.tooltip = function (tp) {
  this.tp = tp;
  this.tp.ox = 0;
  this.tp.oy = 0;
  this.tp.hide();
  this.hover(
    function(event) { 
      this.mousemove(function(event) { 
        this.tp.translate(event.clientX - 
          this.tp.ox,event.clientY - this.tp.oy);
        this.tp.ox = event.clientX;
        this.tp.oy = event.clientY;
      });
      this.tp.show().toFront();
    }, 
    function(event) {
      this.tp.hide();
      this.unmousemove();
    }
  );
  return this;
};

Use it simply by calling:

var paper = Raphael(10, 50, 320, 200);
paper.circle(100,100,10).tooltip(paper.rect(0,0,20,30));

Since Raphael currently does not offer a way to attach custom functions to set, here’s a less elegant way to get tool tips working on set: by accessing the child elements by its attribute items:

var st = paper.set();
st.push(
  paper.circle(10, 10, 5),
  paper.circle(30, 10, 5)
);
st.items[0].tooltip(paper.rect(0, 0, 20, 30));

Enjoy.