Со вчерашним днем я играю с этой проблемой.Кажется, я не могу найти решение для этого.
Проблема:
<ul>
<li>Cats</li>
<li>Dogs</li>
<li>Bats</li>
<li>Ogre</li>
</ul>
Желание сохранить вышеупомянутый неупорядоченный список в массив, когда документ готов с использованием javascript / jQuery.
Делая это с
someArray = $("ul").children()
на $ (document) .ready () в Internet Explorer 8, массив будет содержать элементы li, но без их innerHTML
Это будеткак
<li></li>
<li></li>
...
, поэтому я подумал, что могу просто сохранить дочерние элементы в глобальный массив внутри функции myFunc ().Это гарантирует, что все было загружено.
/* Global Variable */
var someArray = null;
/* function to be called*/
function myFunc() {
if (someArray == null) someArray = $("ul").children()
result = someArray with elements from index 0 and n-2
$("ul").html();
$.each(result, function() {
$("ul").append(this)
}
}
Приведенный выше код прекрасно работает на Chrome и Firefox.каждый раз, когда вызывается myfunc, новый неупорядоченный список будет содержать только кошек и собак.
Однако в IE кажется, что изменение неупорядоченного списка с помощью $ ("ul"). html () также изменяет someArray,Он работает при первом вызове, но при втором вызове он вытянет список элементов из текущего UL
Исходные элементы: кошки, собаки, летучие мыши, людоеды 1-й вызов IE: кошки, собаки, второй вызов IE: пустой массив
Я попытался клонировать массив с помощью $ .extend, и он некажется, чтобы помочь.Есть ли способ, где я могу сохранить список дочерних узлов из исходного UL и не изменять их в IE?
Кажется, что IE использует ссылку на указатель, когда я сохраняю дочерние узлы в массиве