繁体   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