有没有办法重新初始化/刷新/重新加载实际的JavaScript/jQuery方法?
因此,作为一个小背景故事,我在一个页面上使用jQuery插件,该页面通过ajax动态提供一些HTML。用户可以在幻灯片中录制图像的.wav旁白,然后通过ajax切换到另一个图像,录制另一个旁白,冲洗并重复。结束幕后故事 我相信,问题本身更倾向于jQ/JS。当我再次运行“记录”功能时,控制台中出现以下错误: 未捕获的TypeError:对象没有方法“jStartRecording” 这仅在切换到第二个图像并单击“录制”时出现。第一个旁白记录得很好,可以播放,等等,没有问题。我认为我收到了错误,因为我需要重新初始化或重新加载jRecorder插件/方法/函数,因为在切换到幻灯片中的另一个图像后,我尝试使用不同的选项集再次调用jRecorder。因为我再次调用它,所以似乎有些东西没有完全加载,或者插件操作的每个实例之间存在某种冲突 一句话:有没有办法重新初始化jQuery插件,以便在动态切换参数后可以再次运行 也许我完全找错人了——我不知道。任何来自不同视角的洞察都将不胜感激。非常感谢 编辑:根据要求,这里有一些代码。和希望有帮助 每次使用新图像的数据刷新包含叙述记录器的小部件时,都会调用renderPanes。显然,为了简洁和安全起见,有些东西被删掉了有没有办法重新初始化/刷新/重新加载实际的JavaScript/jQuery方法?,javascript,jquery,jquery-plugins,jrecorder,Javascript,Jquery,Jquery Plugins,Jrecorder,因此,作为一个小背景故事,我在一个页面上使用jQuery插件,该页面通过ajax动态提供一些HTML。用户可以在幻灯片中录制图像的.wav旁白,然后通过ajax切换到另一个图像,录制另一个旁白,冲洗并重复。结束幕后故事 我相信,问题本身更倾向于jQ/JS。当我再次运行“记录”功能时,控制台中出现以下错误: 未捕获的TypeError:对象没有方法“jStartRecording” 这仅在切换到第二个图像并单击“录制”时出现。第一个旁白记录得很好,可以播放,等等,没有问题。我认为我收到了错误,因为
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方法来清理,但这一个没有。