Javascript 附';onclick';事件到SVG元素';rect';装载后
我在一个DIV上加载了不同的SVG,效果很好,但是onclick绑定不起作用 加载后,我调用LoadSVGBindings函数来设置onclick绑定 它工作的唯一方法是在FireFox上调试。 在LoadSVGBindings功能停止后,然后恢复,一切正常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:
//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
。