3

在我的页面上,我最初声明var as了通过插件使用 createAll 创建对象的变量...我指的是这个插件: http: //kolber.github.io/audiojs/docs/

为了使插件工作,需要创建这个对象。因此,之后我通过 ajax 加载了一些联系人,并且需要将插件应用于这个新内容,所以我再次创建它var as来创建对象,但是现在页面上有两个相似的对象发生冲突。我想知道有一种方法可以var as在 ajax 调用之后创建它等于页面上的现有对象?

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({


          });
});
4

1 回答 1

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
});

mp3and变量仅用作演示,audio因为我不知道您的 ajax 函数的结构。

Audio.js 有一个.create()函数,它将单个元素作为参数并返回一个对象。原始as变量是一个包含所有对象的数组,audio因此您可以将新对象推到末尾。

通过as在函数外部定义,您可以使其成为全局,这意味着一切都可以访问它,并且可以附加任何新的 audio.js 对象。

于 2013-06-11T20:12:49.410 回答