Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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 插入div时运行脚本_Javascript_Jquery_Ruby On Rails 3_Jqplot - Fatal编程技术网

Javascript 插入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")); }); 是否有其他方法可以做到这一点,以便

我有一个脚本,可以使用。加载文档时,使用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"));
图表$=$(“#”);
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!');
    });
}
参考:


您应该深入研究。这是我见过的最接近的一次,但是调用barChart函数会导致一些奇怪的呈现。是否有一种方法可以测试您是否已经为特定元素调用了barChart?如果是这样,您可以将其设置为有条件的,这样它就不会在一个元素上被多次调用。显然,您可以添加一个伪类或属性,或者保留一个ID列表,但这并不优雅。希望它能说明我的意思。也许你可以从你的场景中插入更多相关的部分,那么更好的解决方案应该更明显。谢谢,我来看看小提琴。但是,如果您想要更多相关的代码,可以在github上找到(大部分代码)。我已将您的链接添加到您的原始帖子(似乎是一个更好的地方列出它)