javascript - 加载后将 'onclick' 事件附加到 SVG 元素 'rect'

标签 javascript jquery d3.js svg

我在 DIV 上加载不同的 SVG,它工作正常,但 onclick 绑定(bind)不起作用。

加载后,我调用 LoadSVGBindings 函数来设置 onclick 绑定(bind)。

其工作的唯一方法是在 FireFox 上进行调试。 在 LoadSVGBindings 函数处停止然后恢复一切正常。

//HTML code
<div id="TheSVG"></div>


//LoadSVG function
function LoadSVG(Mode){

    $.ajax({
        type: "GET",
        url: 'data/' + Mode + '.svg',
        dataType: "text",
        contentType: "charset=UTF-8",
        success: function(data) { $('#TheSVG').html(data); },
        error: function(request, status, error) {alert("Error: " + error);},
     });

    SetSVGBindings();
}


//Set after loading the SVG
function SetSVGBindings(){

    $('polygon').on('click', function () {
        alert("polygon");
    });

    $('rect').on('click', function () {
        alert("rect");
    });
}

我不知道出了什么问题或如何使其正常工作。

最佳答案

您需要在成功函数中调用 SetSVGBindings,即在 SVG 加载后。

您在问题中编写的方式 SetSVGBindings 将在 SVG 加载之前调用,并且文档中不会有任何 SVG 元素可供 CSS 选择器绑定(bind)。

关于javascript - 加载后将 'onclick' 事件附加到 SVG 元素 'rect',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39026935/

相关文章:

javascript - 人力车图将刻度旋转 -90 度

javascript - 如何防止位于 Javascript HREF 属性中的 XSS?

javascript - 如何添加适用于两个下拉菜单的 "random"按钮

javascript - AngularJs:如何访问 Controller 外部的全局变量?

javascript - 无法让 Flexslider 插件使用 manualControls?

javascript - onchange 事件值以编程方式更改

javascript - 在 jquery asp.net mvc 中选中复选框时更改下拉列表值

javascript - 如何找到当前选定节点的类?

javascript - D3 折线图组件未在 React 的 useEffect 中更新

d3.js:在轴上的刻度之间对齐文本标签