Jplayer 播放列表 - 通过单击播放按钮需要动态添加歌曲并在播放器中播放歌曲并将播放按钮切换为暂停按钮

Posted

技术标签:

【中文标题】Jplayer 播放列表 - 通过单击播放按钮需要动态添加歌曲并在播放器中播放歌曲并将播放按钮切换为暂停按钮【英文标题】:Jplayer Playlist - By clicking Play button need add song dynamically and play the song in the player and toggle play button to pause button 【发布时间】:2018-07-17 09:06:48 【问题描述】: 歌曲 1 播放按钮 歌曲 2 播放按钮 歌曲 3 播放按钮

当我点击 song1 播放按钮时,我将使用 ajax 作为 json 动态获取歌曲详细信息,并立即在 jplayer 中播放歌曲,其中播放/暂停等控件下一步工作正常。

但是歌曲1中的播放按钮没有变成暂停按钮,仍然是播放按钮。

我需要将播放按钮更改为暂停按钮。如果我播放任何其他歌曲,比如歌曲 2,歌曲 2 播放按钮应该切换到暂停按钮,当前播放的歌曲应该停止播放。请看一下线框图。

function UnitPlay(ele)
    var unit_id = $(ele).attr('data-song-id');
    $.ajax(
        url: "/get_song_details",
        dataType: 'json',
        data: 
            song_id: song_id,
        ,
        success: function(msg) 
            var songs = msg['song_list'];
            play_song(songs);
        
    );
;

function play_song(songs) 

        var myPlaylist = new jPlayerPlaylist(
            jPlayer: "#jquery_jplayer_1",
            cssSelectorAncestor: "#jp_container_1",
            , [
                
                    title:"",
                    artist:"",
                    mp3:"",
                    oga:"",
                    poster: ""
                
            ],
            
            swfPath: "../../dist/jplayer",
            supplied: "oga, mp3",
            wmode: "window",
            useStateClassSkin: true,=
            playlistOptions: 
                autoPlay: true,
                displayTime: "fast",
            ,
        ); // end jplayer initiate

        myPlaylist.setPlaylist(songs);

        $("#jquery_jplayer_1").on(
            $.jPlayer.event.ready + ' ' + $.jPlayer.event.play,
            function(event) 

                /* === ENABLE PLAYLIST ==== */

                var current = myPlaylist.current;
                var playlist = myPlaylist.playlist;
                $.each(playlist, function(index, obj) 
                    if (index == current) 
                        $(".jp-now-playing").html("<div class='jp-track-name'>" + obj.title + "</div> <div class='jp-artist-name'>" + obj.artist + "</div>");

                    
                );
                $('#playlist-toggle').on('click', function() 
                    $('#playlist-wrap').stop().fadeToggle();
                    $(this).toggleClass('playlist-is-visible');
                );

            ); // end jplayer event ready

    ; // end document ready
<div class="media channel-detail-single-unit">
    <div class="media-body">
        <h4 class="media-heading">Song1</h4>
    </div>
    <div class="media-right">
        <!-- Song1 Play Button --->
        <a class="unit-play-btn channel-single-unit-play" onclick="UnitPlay(this)" data-unit_id=" song.id ">
            <i class="fa fa-play"></i>
        </a>
    </div>
</div>


<!-- Jplayer Skin --->
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
            <!-- Audio Player -->

<!-- Visual Container -->
<div id="jp_container_1" class="jp-audio" role="application" aria-label="media player">
    <div class="jp-type-playlist">
        <!-- Flexbox -->
        <div class="jp-gui jp-interface flex-wrap mob-align-center">

            <!-- Play / Pause... Controls -->
            <div class="jp-controls flex-item">
                <button class="jp-previous" role="button" tabindex="0">
                    <img   src="% static 'images/jplayer/prev-icon.png' %" >
                </button>
                <button class="jp-play" role="button" tabindex="0">
                    <!--<img   src="% static 'images/jplayer/play-icon.png' %" >-->
                    <i class="fa fa-play"></i>
                </button>
                <button class="jp-next" role="button" tabindex="0">
                    <img   src="% static 'images/jplayer/next-icon.png' %" >
                </button>
            </div>
        </div>
    </div>
</div>

【问题讨论】:

【参考方案1】:

当播放器开始播放时,它会将jp-state-playing 类添加到容器中。您可以使用它在播放和暂停按钮之间切换。

在您的 html 中,您应该同时添加播放和暂停按钮。像这样:

<button class="jp-play" role="button" tabindex="0">
    <i class="fa fa-play"></i>
    <i class="fa fa-pause"></i>
</button>

现在,使用 css,您应该最初隐藏暂停按钮,只显示播放按钮:

.fa-pausedisplay:none;

然后在播放时显示暂停图标并隐藏播放图标。

.jp-state-playing .fa-play
    display:none;

.jp-state-playing .fa-pause
    display:inline-block;

【讨论】:

以上是关于Jplayer 播放列表 - 通过单击播放按钮需要动态添加歌曲并在播放器中播放歌曲并将播放按钮切换为暂停按钮的主要内容,如果未能解决你的问题,请参考以下文章

从文本链接启动 jPlayer

jPlayer - 通过 Javascript 实现倒带功能

如何在点击时在 jPlayer 中播放链接到的音频文件?

关于播放器JPlayer的使用及遇到的问题

jPlayer -- 多实例mp3播放器

jPlayer - 设置播放一次且只播放一次