Javascript 插入div时运行脚本
我有一个脚本,可以使用。加载文档时,使用jquery的.each方法呈现每个图形,效果很好。但是,问题在于,当单击一个条时,我将div替换为另一个div。假设在旧图形的位置渲染另一个图形。它更改图形,但不执行脚本 加载项的脚本具有将所有div更改为图形的功能:Javascript 插入div时运行脚本,javascript,jquery,ruby-on-rails-3,jqplot,Javascript,Jquery,Ruby On Rails 3,Jqplot,我有一个脚本,可以使用。加载文档时,使用jquery的.each方法呈现每个图形,效果很好。但是,问题在于,当单击一个条时,我将div替换为另一个div。假设在旧图形的位置渲染另一个图形。它更改图形,但不执行脚本 加载项的脚本具有将所有div更改为图形的功能: $("div.barchart").each(function(){ barChart($(this).attr("id"),$(this).attr("data-xmlurl")); }); 是否有其他方法可以做到这一点,以便
$("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"));
图表$=$(“#”);
chart$.replace为(“'chart\u partial”}%>”;
条形图(chart$.get(0.attr(“id”)、chart$.get(0.attr(“数据xmlurl”));
注:
作为参考,可以在中找到实际的源代码。您是否可以在父元素上添加一个侦听器?如果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"));
});
});
你可以在这里查看我的。在我正在开发的当前应用程序上,我坚持使用1.5.2版。为了解决这个问题,我将取消绑定并重新绑定我的事件,并在“ajaxComplete”和“ready”中加载初始化。我无法让DOM自动重新绑定事件。委托应该像“on”一样工作,但在我的例子中,我仍然必须使用下面的逻辑 简而言之,它看起来是这样的
$(document).ready(function () {
InitSomethingCool();
});
$(document).ajaxComplete(function() {
InitSomethingCool();
});
function InitSomethingCool(){
$(".something").unbind('click').click(function(e) {
//Unbind and rebind click event.
alert('You clicked me!');
});
}
参考: