有没有办法重新初始化/刷新/重新加载实际的JavaScript/jQuery方法?

有没有办法重新初始化/刷新/重新加载实际的JavaScript/jQuery方法?,javascript,jquery,jquery-plugins,jrecorder,Javascript,Jquery,Jquery Plugins,Jrecorder,因此,作为一个小背景故事,我在一个页面上使用jQuery插件,该页面通过ajax动态提供一些HTML。用户可以在幻灯片中录制图像的.wav旁白,然后通过ajax切换到另一个图像,录制另一个旁白,冲洗并重复。结束幕后故事 我相信,问题本身更倾向于jQ/JS。当我再次运行“记录”功能时,控制台中出现以下错误: 未捕获的TypeError:对象没有方法“jStartRecording” 这仅在切换到第二个图像并单击“录制”时出现。第一个旁白记录得很好,可以播放,等等,没有问题。我认为我收到了错误,因为

因此,作为一个小背景故事,我在一个页面上使用jQuery插件,该页面通过ajax动态提供一些HTML。用户可以在幻灯片中录制图像的.wav旁白,然后通过ajax切换到另一个图像,录制另一个旁白,冲洗并重复。结束幕后故事

我相信,问题本身更倾向于jQ/JS。当我再次运行“记录”功能时,控制台中出现以下错误:

未捕获的TypeError:对象没有方法“jStartRecording”

这仅在切换到第二个图像并单击“录制”时出现。第一个旁白记录得很好,可以播放,等等,没有问题。我认为我收到了错误,因为我需要重新初始化或重新加载jRecorder插件/方法/函数,因为在切换到幻灯片中的另一个图像后,我尝试使用不同的选项集再次调用jRecorder。因为我再次调用它,所以似乎有些东西没有完全加载,或者插件操作的每个实例之间存在某种冲突

一句话:有没有办法重新初始化jQuery插件,以便在动态切换参数后可以再次运行

也许我完全找错人了——我不知道。任何来自不同视角的洞察都将不胜感激。非常感谢

编辑:根据要求,这里有一些代码。和希望有帮助

每次使用新图像的数据刷新包含叙述记录器的小部件时,都会调用renderPanes。显然,为了简洁和安全起见,有些东西被删掉了

function renderPanes(type, bucket_id) {
var isRecording = false;

$.getJSON( [endpoint] )
.done(function(json){
    [....]

    $.jRecorder({ 
            host : [endpoint],
            callback_started_recording:     function(){callback_started(); },
            callback_stopped_recording:     function(){callback_stopped(); },
            callback_activityLevel:          function(level){callback_activityLevel(level); },
            callback_activityTime:     function(time){callback_activityTime(time); },
            callback_finished_sending:     function(time){ callback_finished_sending() },
            swf_path : '/assets/js/jrecorder/jRecorder.swf',
    });

    $("#narration_play").click(function(){
        var audio = new Audio("[folder path]/"+bucket_id+".wav");
        audio.play();
    });

    $("#narration_record").click(function(){
        if (!isRecording) {
            $.jRecorder.record(30);
            $("#narration_record").html("<i class='icon-stop'></i> Stop");
            isRecording = true;
        } else {
            isRecording = false;
            $("#narration_record").html("<i class='icon-comment'></i> Record");
            $("#narration_play").removeClass('disabled');
            $.jRecorder.stop();
            $.jRecorder.sendData();
        }
    });
});
}

显示你的代码,很难判断你做错了什么。完全取决于插件的编写方式,所以答案取决于插件。@Barmar,我已经添加了一些代码。希望它有用!看起来这个插件每次调用都是从头开始的。但是它为添加的元素提供了一些硬编码的默认ID;如果在初始化调用中不重写它们,可能会导致重复,这可能是问题的根源。尝试为recorderlayout\u id、recorder\u id和recorder\u name提供唯一值,每次只增加一个计数器。一些插件,例如大多数jQuery UI都有一个.destroy方法来清理,但这一个没有。