向Raphael元素添加事件

问题描述

| 嗨,我正在尝试向SVG Raphael矩形添加mousemove和click事件: 小提琴:http://jsfiddle.net/neuroflux/nXKbW/1/ 码:
tile = ctx.rect(x*10,y*(i*10),10,10).attr({
    fill:\'#000000\',stroke: \'#ffffff\'
});
tile.mouSEOver(function(e) {
    pX = e.pageX;
    pY = e.pageY;
});
tile.click(function() {
    console.log(\'x: \'+pX+\'| y:\'+pY);
});
显然,由于某种原因,这不起作用-我没有输出onClick:\'(     

解决方法

好的,我已经可以使用点击功能。最后^ _ ^。
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <script type=\"text/javascript\" src=\"https://github.com/DmitryBaranovskiy/raphael/raw/master/raphael-min.js\"></script>
        <script type=\"text/javascript\" src=\"http://code.jquery.com/jquery-1.6.1.min.js\"></script>
        <script type=\"text/javascript\">
            /* GLOBAL VARIABLES */
            var drawFrames;
            var canvas;
            var ctx;
            var universe = new Array();
            var tile;
            var pX,pY = 0;

            universe = (
                [[0,0],[0,0]],[[0,0]]
            );

            /* WINDOW LOAD */
            window.onload = function() {
                init();
            }

            /* INITIALISATION */
            function init() {
                ctx = Raphael(10,50,320,200);
                drawFrames = setInterval(drawFrame,40);
            }

            /* FRAME RENDER LOOP */
            function drawFrame() {
                //ctx.clear();
                for (var x = 0; x < universe.length; x++) {
                    for (var y = 0; y < universe[x].length; y++) {
                        for (var i= 0; i < 11; i++) {
                            tile = ctx.rect(x*10,y*(i*10),10,10).attr({
                                fill:\'#000000\',stroke: \'#ffffff\'
                            }).click(function(e) {
                        console.log(\'x: \'+e.pageX+\'| y:\'+e.pageY);
                        })
                    }
                }

            }
        }
        </script>
    </head>
    <body>
        <canvas id=\"main\" width=\"800\" height=\"600\">
            <h1>No Support I\'m Afraid...</h1>
        </canvas>
    </body>
</html>
    ,首先给您的Raphael对象一个ID,然后将click事件绑定到该对象。
tile = ctx.rect(x*10,10).attr({
fill:\'#000000\',stroke: \'#ffffff\'
});
tile.node.id=\'tile_id\';
$(\'#tile_id\').bind(\'click\',function(){alert(\'clicked\');});