我点击时实例化一个新的Vimeo对象。这允许我使用事件目标来获取videoUrl,具体取决于单击的元素。然后vimeo api自动创建一个带有视频嵌入的iframe。问题是,一旦创建了Vimeo播放器,我就无法销毁它并使用另一个videoUrl重新创建它。它一直停留在我点击的第一个元素上。如果我刷新并单击另一个元素,它将与新的videoUrl一起使用,这意味着它适用于我选择的任何元素,但只适用于第一次单击。我猜这是一个我不熟悉的JS问题。我习惯使用C ++,我们可以使用指针来解决这类问题。我很感激任何建议。
function openModal(e) {
var modal = document.getElementById('Modal');
var videoUrl = e.target.dataset.videoLink;
//JS Player Code
alert(e.target.dataset.videoLink);
var options = {
url: videoUrl,
width: 640,
loop: false
};
var player = new Vimeo.Player('Modal', options);
modal.style.display = "block";
//Doesn't seem to do anything
delete player;
}
答案 0 :(得分:0)
与C ++不同,JavaScript有一个垃圾收集器,您无需管理内存。 JS中的delete
运算符与C ++中的delete player
运算符完全不同。 JS不使用指针,而是使用“手动”无法销毁的“引用”。
现在,我不太明白你做iframe
时会发生什么。但我想你想删除display: none
(这没有任何意义。)
但无论如何,你有两个选择。你要么
delete
顺便说一下,JS中的std::map::erase
运算符等同于C ++中的{{1}}方法。