jplayer + Ajax вставил контент - PullRequest
0 голосов
/ 01 апреля 2012

Я использую jPlayer для воспроизведения аудиофайлов.Если я использую проигрыватель для содержимого, которое является приватным, когда страница загружается, она работает без проблем.

Мне также нужно это для HTML, который вставляется AJAX.Здесь это не работает.Кажется, событие готовности не вызвано.

Я написал функцию, которая может быть выполнена с помощью click().Таким образом, я могу щелкнуть по нему вручную, когда HTML-код, содержащий проигрыватель, будет полностью загружен.Здесь у меня та же проблема: событие готовности не запускается.

Это моя функция, которая отлично работает на проигрывателях без вставки AJAX:

$('.jp-jplayer').each(function () {
    var src = $(this).attr('data-src');
    var id = $(this).attr('id');
    var post_id = $(this).attr('data-id');
    alert('beg');
    $('#' + id).jPlayer({
        ready: function () {
            $(this).jPlayer('setMedia', {
                mp3: "/prelisten/_lofidl/change_of_heart_full_lofi.mp3",
            });
            alert('#' + id);
        },
        swfPath: "/wp-content/themes/Dark_3Chemical_DE_mit_Pagenavi/Dark_3Chemical_DE/audioplayer/js",
        //////ERRRROOOOOR
        solution: "flash, html",
        supplied: "mp3",
        wmode: "window",
        cssSelectorAncestor: "#jp_container_" + post_id,
        play: function () { // To avoid both jPlayers playing together.
            $(this).jPlayer("pauseOthers");
        },
        repeat: function (event) { // Override the default jPlayer repeat event handler
            if(event.jPlayer.options.loop) {
                $(this).unbind(".jPlayerRepeat").unbind(".jPlayerNext");
                $(this).bind($.jPlayer.event.ended + ".jPlayer.jPlayerRepeat", function () {
                    $(this).jPlayer("play");
                    debug($(this));
                });
            } else {
                $(this).unbind(".jPlayerRepeat").unbind(".jPlayerNext");
                $(this).bind($.jPlayer.event.ended + ".jPlayer.jPlayerNext", function () {
                    //$("#jquery_jplayer_4858").jPlayer("play", 0);
                });
            }
        },
    });
    $("#jplayer_inspector").jPlayerInspector({
        jPlayer: $('#' + id)
    });
});

В настоящее время я устанавливаю src вручную, чтобы исключить любые возможные ошибки здесь.

Как можноЯ запускаю эту функцию для содержимого, вставленного в AJAX?

РЕДАКТИРОВАТЬ:

Это код, который выбирает HTML, включая игроков:

$.get('/query_posts.php', {
    paged: _page,
    cats: cols
}, function(data) {
    $('#search-results').append(data).fadeIn(300);
    //create_player_scripts();
    //set_players();
    $('#search-results').find('input[name="cartLink"]').each(function() {
        $(this).val($(this).closest('.post1').find('.post_headl a').attr('href'));
    });
});

1 Ответ

3 голосов
/ 12 октября 2012

Чтобы перезагрузить страницу AJAX, мне пришлось сначала уничтожить все экземпляры jplayer.Поэтому я написал небольшую функцию, которая захватывает все экземпляры jplayer на сайте (путем поиска классов jp-audio) и вызывает jplayer('destroy'); и jplayer('clearMedia').Эта функция вызывается в $.ajax({ beforeSend: destroyJplayerInstances(); })

ОБНОВЛЕНИЕ: Вот заявление от разработчика jPlayer Марка Панахистона: https://groups.google.com/forum/#!topic/jplayer/Q_aRhiyYvQo

Надеюсь, что поможет!

...