clone()无法使用Internet Explorer 8

时间:2012-10-02 07:24:46

标签: jquery internet-explorer clone

我有这段代码:

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”的值:object为null或undefined jquery.min.js?ver = 3.4.1,第2行第4426行

2 个答案:

答案 0 :(得分: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());​

===> Demo

答案 1 :(得分:2)

.clone()为您提供 jQuery扩展元素非HTML文本。尽管.html()足以接受jQuery对象,但这并不是最初的目的。

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