将现有对象检索到变量中?

时间:2013-06-11 19:21:38

标签: javascript jquery object

在我的页面上,我最初声明变量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({


          });
});

1 个答案:

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

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

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

通过在函数外部定义as,您可以将其设置为全局,这意味着所有内容都可以访问它,并且可以附加任何新的audio.js对象。