Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 附';onclick';事件到SVG元素';rect';装载后_Javascript_Jquery_D3.js_Svg - Fatal编程技术网

Javascript 附';onclick';事件到SVG元素';rect';装载后

Javascript 附';onclick';事件到SVG元素';rect';装载后,javascript,jquery,d3.js,svg,Javascript,Jquery,D3.js,Svg,我在一个DIV上加载了不同的SVG,效果很好,但是onclick绑定不起作用 加载后,我调用LoadSVGBindings函数来设置onclick绑定 它工作的唯一方法是在FireFox上调试。 在LoadSVGBindings功能停止后,然后恢复,一切正常 //HTML code <div id="TheSVG"></div> //LoadSVG function function LoadSVG(Mode){ $.ajax({ type:

我在一个DIV上加载了不同的SVG,效果很好,但是onclick绑定不起作用

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

它工作的唯一方法是在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");
    });
}
//HTML代码
//LoadSVG函数
函数加载SVG(模式){
$.ajax({
键入:“获取”,
url:'data/'+Mode+'.svg',
数据类型:“文本”,
contentType:“字符集=UTF-8”,
成功:函数(数据){$('#TheSVG').html(数据);},
错误:函数(请求、状态、错误){alert(“error:+error”);},
});
SetSVGBindings();
}
//加载SVG后设置
函数SetSVGBindings(){
$('polygon')。在('click',函数(){
警报(“多边形”);
});
$('rect')。在('click',函数(){
警报(“rect”);
});
}

我不知道哪里出了问题,也不知道如何让它正常工作。

您需要在success函数中调用SetSVGBindings,即在SVG加载之后


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

您需要在success函数中调用SetSVGBindings,即在加载SVG之后


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

现在是mi函数

    function LoadSVG(Modo){

        $.ajax({
            type: "GET",
            url: 'Apoyos/bootstrap/data/' + Modo + '.svg',
            dataType: "text",
            contentType: "charset=UTF-8",
            success: function(data) { $('#SVG').html(data); SetSVGBindings();},
            error: function(request, status, error) {alert("Error: " + error);},
         });
    }
我不明白为什么它以前不工作,毕竟它是在函数成功完成后加载的


非常感谢

现在是mi函数

    function LoadSVG(Modo){

        $.ajax({
            type: "GET",
            url: 'Apoyos/bootstrap/data/' + Modo + '.svg',
            dataType: "text",
            contentType: "charset=UTF-8",
            success: function(data) { $('#SVG').html(data); SetSVGBindings();},
            error: function(request, status, error) {alert("Error: " + error);},
         });
    }
我不明白为什么它以前不工作,毕竟它是在函数成功完成后加载的


非常感谢

我简直不敢相信!它就像一个符咒,我简直不敢相信!它就像一个符咒。
毕竟它是在函数成功完成后加载的
,不,它不是<代码>$。ajax是异步的,它不会阻塞,脚本将继续,并且在
$完成之前调用
SetSVGBindings
。ajax
已完成。
在函数成功完成后加载所有内容后,没有<代码>$。ajax
是异步的,它不会阻塞,脚本将继续,并且在
$完成之前调用
SetSVGBindings