Единственный способ, которым может помочь любое делегирование событий .on () .live () .delegate (), - это если вы полностью планируете отказаться от mb_miniPlayer и написать свой собственный javascript.Тогда, конечно, вы можете убрать все функциональные возможности «проигрывателей песен» (например, запуск, остановка, пауза) от определенных элементов и переместить их к чему-то постоянному на странице.
Что все событиеДелегация делает это контроль перемещения.Например, альтернатива привязке простого старого обработчика кликов может быть следующей:
$('a.mylink').on('click',function(){
alert('I see you!');
});
Но та же функциональность может быть реализована с помощью:
$('body').on('click','a.Otherlink',function(){
alert('I see you too!');
});
jsFiddle
Что мы сделали, так это переместили обработчик событий из самого <a>
в <body>
.Второй аргумент .on () - необязательный селектор для фильтрации.В этом случае из всех кликов, которые происходят на <body>
, нас интересуют только те, которые произошли от <a class="otherLink">
.
К сожалению, это мало поможет вашей проблеме..live () - это не лекарство от всего, что некоторые, кажется, думают.Это волшебным образом не делает страницу «более живой».Что он делает, так это перемещает обработку событий из чего-то, что может быть временным (например, ссылку, которую мы могли бы генерировать динамически), во что-то более постоянное (тело является довольно безопасной целью).
Проблема в том, что вы бесконечныскроллер, если что-то не существует на странице, когда вы запускаете свой javascript (часть, которая создает экземпляры игроков), тогда они не могут быть «активированы».И никакое использование .live () .delegate () ИЛИ .on () не может вернуть их.
Что вы можете сделать, так это найти способ подключиться к нарушающему JavaScript и заставить его делать то, что вам нужноэто, чтобы создать экземпляр ваших недавно загруженных игроков. Какой плагин вы используете?Возможно, я смогу предложить способ подключиться к нему.
РЕДАКТИРОВАТЬ: Это будет немного сложно без возможности проверить вашу страницу, но выглядит как ваша бесконечнаяПлагин -scroll обеспечивает обратный вызов, который срабатывает каждый раз, когда он загружает новый контент, и вы уже используете его.Это прекрасно, и мы добавляем туда:
function( newElements ) {
var $newElements = $(newElements);
$newElements.find(".audio").mb_miniPlayer({
width:210,
height:34,
inLine:false,
onEnd:playNext
});
Идея в том, чтобы искать в новом контенте новые аудиоплееры и активировать их.Поскольку playNext () была определена в той же функции, использование этого в качестве вашего 'onEnd' должно работать нормально.