[英]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.