如何删除多个mediaelement.js播放器?

时间:2013-12-30 01:32:44

标签: javascript mediaelement.js

我需要“手动”从页面中删除多个mediaelement.js播放器。

我试过了:

video_player_1.remove(); 
video_player_2.remove();
video_player_3.remove();
...  

(并尝试以各种循环方式尝试删除所有玩家。)

并且:

if (mejs) {
    var players = Object.keys(mejs.players);
    players.forEach( function(player) {
        mejs.players[player].remove();
    });
}

mejs.players = {};

甚至:

mejs = {};

似乎完全删除了玩家以及与之相关的任何事件。当我导航回视频页面时,我收到以下错误:

TypeError: 'undefined' is not a function (evaluating 'video_player_1.addEventListener')

有没有其他人遇到这个并找到了解决方案?谢谢你的帮助。

修改 我应该注意,我在每个玩家创建时都会添加以下监听器:

video_player_1.addEventListener('ended', function(event) {
    //Code that advances to the next video here ...
}

2 个答案:

答案 0 :(得分:2)

假设您使用jQuery,这样可以正常工作:

var player = $('#player')[0].player;
player.remove();

在此基础上,这应该删除视频元素上的所有mejs实例:

(function($) {
    $(document).ready(function() {
        var mejs_players = new Array();
        var player;
        $('video').each(function() {
            player = $(this)[0].player;
            player.remove();
        });
    });
})(jQuery);

答案 1 :(得分:0)

测试了最新的代码,删除功能应该改为

$('video').each(function() {
        player = $(this).data("mediaelementplayer");
        alert(player);
        player.remove();
    });