clone() не работает Internet Explorer 8

У меня есть этот код:

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) не выводит предупреждение.

Странно то, что я получаю сообщение об ошибке в min-файле jquery (просто в IE8 нет другого браузера или версии браузера):

SCRIPT5007: невозможно получить значение свойства 'nodeType': объект имеет значение null или не определено jquery.min.js? Ver=3.4.1, строка 2, символ 4426

2 ответа

Вы можете вызвать javascript DOM API cloneNode() метод вместо jQuery clone(). Больше информации о MDN

Пример:

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

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

===> Демо

.clone() предоставляет расширенный элемент jQuery, а не текст HTML. Даже если .html() достаточно приспособлен для приема объектов jQuery, это не то, для чего он изначально был предназначен.

В качестве решения попробуйте использовать $(openPopup).empty().append(clone); вместо $(openPopup).html(clone);

Другие вопросы по тегам