我有一个使用 jqplot 绘制图形的脚本.它在加载文档时工作正常,使用 jquery 的 .each 方法呈现每个图形。但是,问题出在单击栏时将 div 替换为另一个 div 时。假设在旧图的位置渲染另一个图。它更改图形但不执行脚本。
加载项目的脚本具有将所有 div 更改为图形的功能:
$("div.barchart").each(function(){
barChart($(this).attr("id"),$(this).attr("data-xmlurl"));
});
是否有另一种方法可以做到这一点,以便在更改 div 时也能正常工作?
更新:
Rails 生成一个运行的脚本。但是,当我有这个时它似乎不起作用:
chart$=$("#<%=params[:chart_id]%>");
chart$.replaceWith("<%=escape_javascript(render :partial=>"chart_partial"}%>");
barChart(chart$.get(0).attr("id"),chart$.get(0).attr("data-xmlurl"));
备注:
作为引用,实际的源代码可以在 jquery_cheats project 中找到
最佳答案
或许您可以在父元素上添加一个监听器?如果多次调用 barChart() 函数是否可以?
也许是这样的:
$("div.barchart").parent().on("DOMSubtreeModified", function(e) {
// (or maybe use DOMNodeInserted event instead)
$("div.barchart[id][data-xmlurl]").each(function() {
barChart($(this).attr("id"),$(this).attr("data-xmlurl"));
});
});
你可以看看我的jsFiddle为此。
关于javascript - 插入 div 时运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11617430/