#javascript #jquery #html #internet-explorer
#javascript #jquery #HTML #internet-explorer
Вопрос:
У меня есть DIV, который содержит неупорядоченный список. Я хочу сделать копию этого, немного переформатировать его, а затем снова вставить обратно в DOM. Это работает нормально, execpt в IE (пока протестировано в 8 и 9), где кажется, что копия элементов кажется живой, а не копией.
Вот что происходит:
var target = $('.cities').eq(0) //grab my list
var $bigList = $(target).find('li') // grab all the list items
alert($bigList.eq(0).html()) // this displays the first list item, no problem
$(target).html(emptyList) // I put in a bunch of placeholder HTML
alert($bigList.eq(0).html()) // EMPTY on IE, same as first alert() on all others
Кажется, что $bigList
это все еще указывает на DOM, а не копируется как значение. Как я могу обойти это?
Ответ №1:
Вместо $(target).html(emptyList)
использования $bigList.remove();
: http://jsfiddle.net/gilly3/FP5kX /
Редактировать: вызовите оба оператора:
$bigList.remove();
target.html(emptyList);
Комментарии:
1. Извините, я не понял, что «emptylist» — это какой-то HTML-заполнитель, который я использую позже.
2. Правильно.
.remove()
удаляет элементы из DOM, но не удаляет их. У вас все еще есть ваши элементы. Смотрите jsfiddle, который я опубликовал.3. Это сработало прекрасно. Спасибо. Я все еще удивляюсь, почему IE обрабатывает это по-другому.
Ответ №2:
Попробуйте cloning .cities, используя clone, вы получите копию domelement, но не сам элемент
var target = $('.cities').clone()[0];