jQuery克隆和删除div不会添加div

我找到了一段帮助我解决原始问题的代码:我有一段标签内容,其中一些内容中包含video。 播放video时,选择另一个选项卡,video将继续在后台播放。 常见问题我猜:)

无论如何,我发现一些似乎有用的代码,但显然我做错了。 这是代码:

// 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,但从不把它放回去(它以“未定义”的forms返回)。 所以我不知道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播放停止)但是 – 如果我在内容中有video标签(即HTML5video播放),那么,由于某种原因,video会丢失。 返回的HTML 完全正确,但由于我无法理解的原因,video不再被识别,并且不会播放任何内容。 它就像video根本不存在,或者它是一条不正确的路径。 (我假设这与DOM有关,而不再认识它?)

有谁知道如何修复任何版本的代码? 因为我无法看到这里发生了什么。

非常感谢!

ETA:作为附注,如果我正在使用replaceWith()函数,并且我使用HTML5video转到标签并播放它,然后交换标签,当我返回包含video的标签时,video仍然在那里,工作正常,如果你点击“播放”它将从你交换标签的点开始播放(而不是从头开始)。

如果我转到包含video的标签,并在播放HTML5video之前移动到另一个标签,那么返回带有HTML5video的标签,然后video就消失了。 这真的很奇怪。

如果它有帮助,到目前为止这只发生在谷歌浏览器中。 我还没有检查过是否存在其他浏览器中存在的问题。

你可以尝试使用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); 

我有同样的问题,这对我有用

不能将.html()方法与jQuery对象一起使用 – 需要使用字符串。

编辑: BTW,你在哪里找到.html(clone)代码?