Harshal Chauhari
Harshal Chauhari

Reputation: 91

How to add raphaeljs object in <div> tag

$(document).ready(function(){                           
    $("#btnAO").live("click", function(){
        $("#canvasdiv").append("<div id='id1' width='50px' height='50px'></div>");
            $("#id1").append(new Raphael(document.getElementById('canvasdiv'), 900, 600).rect(30, 50, 80, 100).attr({
                fill : "blue",
                stroke : "black",
                strokeWidth : 0,
                r : 5
        }));
    });
});

i have tried this its add Raphael object in but it wont display on screen

Upvotes: 8

Views: 6472

Answers (2)

fullstacklife
fullstacklife

Reputation: 2061

  1. new keyword is not needed

var paper = Raphael(document.querySelector(target_css_selection_str), svg_width_int, svg_height_int);

  1. Since you ask about what it returns. It returns a Paper object, which holds a reference to the new SVG element that it just built, via a property it calls "canvas".

...you should approve @Supr as the right answer btw, I am just adding a 2 cents.

Upvotes: 0

Supr
Supr

Reputation: 19022

Raphael renders into the container that you give it as the first argument. The return value is a Raphael paper object which you use for rendering. In short, just cut away $("#id1").append and it shows up.

$(document).ready(function(){                           
    $("#btnAO").live("click", function(){
        $("#canvasdiv").append("<div id='id1' width='50px' height='50px'></div>");
        var paper = new Raphael(document.getElementById('canvasdiv'), 900, 600);
        paper.rect(30, 50, 80, 100).attr({
            fill : "blue",
            stroke : "black",
            strokeWidth : 0,
            r : 5
        });
    });
});

Further more, since you're using jQuery anyway, you might want to replace document.getElementById('canvasdiv') with $('#canvasdiv').get(0) for consistency.

Upvotes: 18

Related Questions