在我的页面上,我最初声明变量var as
,它使用createAll通过插件创建一个对象...我指的是这个插件:http://kolber.github.io/audiojs/docs/
为了使插件工作,需要创建此对象。所以在那之后我通过ajax加载了一些联系,并且插件需要应用于这个新内容,所以我再次创建这个var as
来创建对象,但是现在页面上有两个相似的对象发生冲突。我想知道有一种方法可以让我在jjax调用等于页面上的现有对象之后创建var as
吗?
我试着通过var as
查看alert(as);
内的内容,这会返回[Object object]
修改
这是使用控制台日志打印出来的(这是原始的,第一个对象)
Object
duration: 1
element: HTMLAudioElement
loadStartedCalled: false
loadedPercent: 0
mp3: null
playing: false
settings: Object
source: HTMLAudioElement
wrapper: HTMLDivElement
__proto__: Object
这就是对象的创建方式,但我相信你需要很好地了解这个插件
// Initialize audio js
audiojs.events.ready(function() {
var as = audiojs.createAll({
});
});
答案 0 :(得分:2)
我测试了一个有效的解决方案。请注意,代码只是为了显示它的工作原理 - 请参阅下面的解释,了解详细信息。
var as;
audiojs.events.ready(function () {
as = audiojs.createAll();
});
$(document).ready(function () {
setTimeout(function () {
var mp3 = "http://s3.amazonaws.com/audiojs/02-juicy-r.mp3"; // audio.js example
// creating new audio element, yours is probably added via ajax
// [0] used to get DOM element instead of jQuery object.
var audio = $('<audio/>', {id: 'test'}).appendTo('body').attr('src', mp3)[0];
var testAS = audiojs.create(audio); // initialise new audio.js player
as.push(testAS); // add "testAS" object to "as" array of objects
console.log(as); // log "as" - now holds the original objects + "testAS"
}, 5000); // timeout used for testing, above code can be in ajax success function instead
});
mp3
和audio
变量仅用作演示,因为我不知道你的ajax函数的结构。
Audio.js有一个.create()
函数,它接受一个元素作为参数并返回一个对象。原始as
变量是一个包含所有audio
个对象的数组,因此您可以将新对象推送到最后。
通过在函数外部定义as
,您可以将其设置为全局,这意味着所有内容都可以访问它,并且可以附加任何新的audio.js对象。