我找到了一段代码,可以帮助我解决最初的问题:我有一段选项卡式内容,其中一些内容中有视频。当您播放视频,然后选择另一个选项卡时,视频会在后台继续播放。我猜常见的问题:)
无论如何,我发现了一些似乎可以工作的代码,但显然我做错了什么。这是代码:
// stop video playback when div is hidden
$('.contextual-help-tabs li').click(function() {
var test = $('.contextual-help-tabs-wrap div.active').attr('id'); // gets previously active div ID
var clone = $('#'+test).clone(true); // clones the previously active div
$('#'+test).remove(); // removes the previously active div
$('#'+test+'-holder').html(clone); // puts it back like new
});
问题是这样的: test
确实,返回正确的 div。它获取在当前和活动的一个之前打开的选项卡的 div ID。这是一种享受。它也可以很好地删除 div。
但是,它并没有将其放回原处。当我弹出“警报”以查看正在发生的事情时,它正在删除 div,但永远不会将其放回(它以“未定义”的形式返回)。所以我不知道是否clone
只是没有克隆,或者$('#'+test+'-holder').html(clone);
只是没有工作。
作为旁注,我也尝试使用这种替代方法:
// stop video playback when div is hidden
$('.contextual-help-tabs li').click(function() {
var test = $('.contextual-help-tabs-wrap div.active').attr('id'); // gets previously active div ID
var clone = $('#'+test).clone(true); // clones the previously active div
$('#'+test).replaceWith(clone); // replaces the previously active div with the "refreshed" contents of the div
});
这实际上工作得很好 - 它正在用内容替换内容(视频播放停止)但是 - 如果我video
在内容中有标签(即 HTML5 视频播放),那么由于某种原因,视频会丢失。返回的 HTML完全正确,但由于我无法理解的原因,视频不再被识别,并且不会播放任何内容。它就像视频根本不存在,或者路径不正确。(我假设这与 DOM 不再识别它有关?)
有人知道我如何修复任一版本的代码吗?因为我只是看不到这里发生了什么。
非常感谢!
ETA:作为旁注,如果我使用的是 replaceWith() 函数,然后我转到带有 HTML5 视频的选项卡并播放它,然后交换选项卡,当我返回到其中包含视频的选项卡时,视频仍然在那里,工作正常,如果您单击“播放”,它将从您交换标签的位置开始播放(而不是从头开始)。
如果我转到包含视频的选项卡,然后在播放 HTML5 视频之前移动到另一个选项卡,然后返回到包含 HTML5 视频的选项卡,那么视频就消失了。这真的很奇怪。
如果它有帮助,到目前为止,这只发生在谷歌浏览器中。我还没有真正检查过其他浏览器是否存在问题。