2013-06-11 3 views
3

На моей странице я сначала объявить переменную var as, которая создает объект через плагин с помощью createAll ... Я имею в виду этот плагин: http://kolber.github.io/audiojs/docs/Извлечь существующий объект в переменную?

Для того, чтобы плагин для работы этого объекта должен быть создан. Поэтому после этого я загружаю некоторый контакт через ajax, и плагин должен быть применен к этому новому контенту, поэтому я снова создаю этот var as для создания объекта, однако теперь на странице конфликтуют два похожих объекта. Я хотел бы знать, что существует способ, которым я могу сделать var as, который создается после вызова ajax, равного существующему объекту на странице?

Я попытался, глядя на то, что внутри var as делая alert(as); Это возвращает [Object object]

EDIT

Это то, что печатается с лог консоли (Это оригинальный, первый объект)

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


      }); 
}); 
+6

Не пытайтесь отлаживать «предупреждение». Используйте 'console.log'. Затем вы можете увидеть, что такое объект. – Paulpro

+0

Вы могли бы опубликовать код, с которым у вас возникли проблемы? А именно строки, в которых вы первоначально определяли 'as' и ajax. – Joe

+1

@Paulpro: До тех пор, пока вы не используете IE^_^ –

ответ

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 переменные используются только в качестве демонстрации, как я не знаю структуру вашей АЯКС функции.

Audio.js имеет функцию .create(), которая принимает один элемент в качестве аргумента и возвращает объект. Исходная переменная as представляет собой массив, содержащий все объекты audio, поэтому вы можете просто нажать новый объект на конец.

Определяя as вне функции, вы делаете это глобальным, что все может получить к ней доступ, и любые новые объекты audio.js могут быть добавлены.

+0

Привет, Джо, спасибо за это, но я не совсем уверен, что это решает проблему. Это в основном добавит новые экземпляры в существующий массив объектов? То, что я пытаюсь понять, - это заменить «var as = audiojs.createAll» чем-то вроде «var as = получить существующий объект». Поэтому на самом деле я не хочу создавать новые элементы, но использовать существующие, как Я должен определить ** как ** снова после вызова ajax, но не могу использовать ** createAll **, поскольку он просто создает новый элемент выше предыдущего. Если я не понимаю, просто не могу придумать лучшего способа объяснить это. – Ilja

+0

@Ilya - если вы просто хотите получить исходный объект, используйте «var as = as;» и убедитесь, что вы ** первоначально ** определяете 'as' вне какой-либо функции или используете' window.as = audiojs.createAll() ; 'в вашем первом коде audio.js. Если вы хотите, вы можете добавить код, в котором вы снова определяете 'as'? – Joe

+0

Привет, не могли бы я попросить вас присоединиться к этой чатовой комнате для получения более подробного объяснения. Http://chat.stackoverflow.com/rooms/31607/audiojs – Ilja

Смежные вопросы