2

我有这个代码:

openPopup.hide();

var substr = popupId.split('-');                        
var clone = $("#popup"+substr[1]).clone(true);

$("#popup"+substr[1]).remove();
$(openPopup).html(clone);
$.dimScreenStop();

它在 IE 7、IE 9、Chrome、Firefox 中运行良好。

我已将问题追踪到“ var clone = $("#popup"+substr[1]).clone(true); ”这一行。通过在所有行之间添加“ alert("Test"); ”并在该行之后(在 IE8 中),它不会输出警报。

奇怪的是,我在 jquery min-file 中收到错误(仅在 IE8 中没有其他浏览器或浏览器版本):

SCRIPT5007:无法获取属性“nodeType”的值:对象为 null 或未定义 jquery.min.js?ver=3.4.1,第 2 行字符 4426

4

2 回答 2

5

您可以调用 javascript DOM API cloneNode() 方法而不是 jQuery 的 clone()。有关MDN的更多信息

例子 :

var clone = $("#node").get(0).cloneNode(true);
var $clone = $(clone); // JQUERY object

$('#copy').empty().html($clone.html());​

===>演示

于 2012-10-02T07:39:37.333 回答
2

.clone()给你一个jQuery 扩展元素不是 HTML 文本。即使.html()足够容纳 jQuery 对象,这也不是它最初的用途。

作为解决方案,请尝试使用$(openPopup).empty().append(clone);而不是$(openPopup).html(clone);

于 2012-10-02T07:34:29.087 回答