我找到了一段帮助我解决原始问题的代码:我有一段标签内容,其中一些内容中包含视频。播放视频时,选择另一个选项卡,视频将继续在后台播放。常见问题我猜:)
无论如何,我发现一些似乎有用的代码,但显然我做错了。这是代码:
// 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视频的标签,然后视频就消失了。这真的很奇怪。
如果有帮助,到目前为止这只发生在Google Chrome中。我还没有真正检查过其他浏览器是否存在问题。
答案 0 :(得分:0)
您可以尝试使用detach()。在这里找到它http://api.jquery.com/detach/ 它的作用是它实际上从DOM树中删除了一个所需的节点,你可以为它分配一些像这样的变量
var video = $('#videoDivId').detach(); // you can also declare this var global then use it in some other function
$('#someDifferentDiv').append(video);
我有同样的问题,这对我有用
答案 1 :(得分:-1)
不能将 .html()
方法与jQuery对象一起使用 - 需要使用字符串。
修改:BTW,您在哪里找到.html(clone)
代码?