我有这段代码:
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行
答案 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);