簡體   English   中英

我的jplayerplaylist刪除功能不起作用

[英]My jplayerplaylist remove function isn't working

我正在嘗試制作網站的移動版本,並且jplayer功能與我的主網站非常相似。 播放列表會根據您所在的頁面進行更新,並且將從播放列表中刪除當前正在聽的歌曲(當前正在聽的歌曲除外)中的所有歌曲,然后頁面會從正在查看的頁面中動態添加歌曲。

它可以在我的主頁上正常工作,但是我的移動版本(幾乎相同的代碼)無法使用。

我設置了jplayer_playlist.option("removeTime", 0); 就像jplayer文檔建議的那樣,但是它不起作用。 這是我的一些代碼,因此您可以確切地看到我在做什么。

    function reload()
    {
        var current = jplayer_playlist.current;

        for(var i = 0; i < current; i++)
        {
            deleteSong(0);
        }
        var length = theTitles.length;
        for(var i = 0; i < (length - 1); i++)
        {
            deleteSong(1);
        }
    }

    function deleteSong(index)
    {
        if(!jplayer_playlist.remove(index))
        {
            console.log("Could not delete it.");
        }
    }

第一個刪除不顯示錯誤消息,但是第二個(以及之后的每個刪除)顯示錯誤消息。 似乎好像沒有意識到我將removeTime設置為0,即使我這樣做了(並且在進行任何刪除調用之前)。 當您嘗試從remove中刪除某些東西時,jplayer.remove函數還有其他依賴嗎?

我遇到了同樣的問題,並在jPlaylist文檔中找到了答案: http ://jplayer.org/latest/demo-02-jPlayerPlaylist/

“因為第二個命令僅在刪除動畫時間removeTime為零時才有效。”

就我而言,我編碼了以下功能,以擦除所有歌曲直到當前的歌曲:

創建jPlaylist時:

var playlistOptions = {
playlistOptions: {
    enableRemoveControls: true,
    autoPlay: false,
    removeTime: 0
},
...
};
playlist = new jPlayerPlaylist(.......);

以及刪除歌曲的功能:

function deleteUpToCurrent(e) {
    while(playlist.current != 0) {
        playlist.remove(0); 
    }
    return false;
}

希望能幫助到你! 干杯

在jplayerPlaylist.remove函數的jquery.playlist.js的355 中,有一個對JQuery的remove函數的調用:

$(this).remove();

如果您查看JQuery的源代碼 ,它將被委托給DOM方法

elem.parentNode.removeChild( elem );

在現代瀏覽器中,此DOM操作是異步的,即,它立即返回,但實際上刪除DOM元素需要花費時間。 因此,jplayerPlaylist.remove()方法在實際刪除節點之前返回。 不幸的是,沒有回調。 因此,唯一的解決方法是setTimeout。

var DELAY = 10;
function reload()
{
    var current = jplayer_playlist.current;
    var length = jplayer_playlist.playlist.length;
    if (current > 0)
        deleteSong(0);
    else if (length > 1)
        deleteSong(1);
    if (length > 1)
        window.setTimeout(reload, DELAY);
}

您可能需要調整延遲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM