如何将.click()事件绑定到Chrome中任何动态创建的Raphael对象?

时间:2014-05-21 09:53:13

标签: javascript jquery svg raphael

更新:我已运行此代码并检查了Chrome控制台是否存在任何错误或警告。找不到。

我使用Raphael编写了以下代码来绘制圆圈。

我们的想法是让一个大红圈注册.click()事件,以创建额外的小绿圈。

出于某种原因,对于在第一个大红色圆圈的.click()事件中创建的较小绿色圆圈,chrome不会触发.click()个事件。虽然Internet Explorer有。即使 this Fiddle 在浏览Chrome时也能正常运行。但如果完全本地运行,代码将无效。

<html>
  <head>
    <title>Raphael Test</title>
    <script src="script/jquery-1.9.1.js"></script>
    <script src="script/raphael.js"></script>
    <script>
        var x = 100;    /* to offset x position for dynamically created */

        $(document).ready(function(){
            var paper = Raphael('holder');
            var circle = paper.circle(300,300,100);
            circle.attr("fill","red");
            circle.click(function(){
                var inner=paper.circle(x+=100,100,20).attr("fill","green");
                inner.attr("stroke-width","4");
                /* The following code has no effect whatsoever !!!*/
                inner.click(function(){
                    alert('green circle clicked');
                });
            });
    });

        </script>
    </head>
    <body>
       <div id="holder" style="background-color:whitesmoke;width:100%;height:100%;"></div>
   </body>
</html>

我尝试在高级中声明click事件,并将函数名称传递给创建对象的.click(),但这不起作用。

我尝试将inner变量声明为红色circle的范围,以便稍后我可以向其添加事件侦听器,但这也无效。

如何创建对象并将.click()事件附加到它?

0 个答案:

没有答案