动态添加onclick on SVG elements

时间:2018-02-26 07:13:03

标签: javascript svg onclick dynamically-generated

我在svg中动态创建了一些圈子,我想向所有圈子添加onlick功能。我知道它可以这样做:<rect class="btn" x="0" y="0" width="10" height="10" onclick="alert('click!')" />,但我正在创建这样的元素:

            newCircle.setAttribute("class","circle");                                              
            newCircle.setAttribute("cx",centerX);                                                  
            newCircle.setAttribute("cy","850");                                                    
            newCircle.setAttribute("r","150");                                                     
            newCircle.style.stroke = "black";                                                      
            newCircle.style.strokeWidth = "2px";                                                   
            newCircle.style.opacity = circleOpacity[i-1];                                          
            newCircle.style.fill = circleColour[i];
            svgNode.appendChild(newCircle);

我尝试添加此内容,

$(".circle").click(function() {
          onclick= "alert('click!')";

        })

但它不起作用。

我也尝试过这样的事情:newCircle.setAttribute("onclick","myFunction");

我怎样才能让它发挥作用?谢谢!

2 个答案:

答案 0 :(得分:2)

$(".circle").click(function() {
     onclick= "alert('click!')";
})

这应该是

$(".circle").click(function() {
    alert('click!');
})
newCircle.setAttribute("onclick","myFunction");

这应该是

newCircle.setAttribute("onclick","myFunction()");

但是,现在,正常的做法如下:

newCircle.addEventListener("click", myFunction);

答案 1 :(得分:0)

试试这个

jQuery('body').on('click','.circle',function(){
 alert('clicked')
})