自昨天以来,我一直在玩这个问题。我似乎无法找到解决办法。Internet Explorer:复制/克隆孩子到阵列
问题:
<ul>
<li>Cats</li>
<li>Dogs</li>
<li>Bats</li>
<li>Ogre</li>
</ul>
愿望上述无序列表保存到数组当文件使用javascript/jQuery是准备就绪。
在Internet Explorer 8中
someArray = $("ul").children()
在$(文件)。就绪()这样做,阵列将有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。它适用于第一个呼叫,但在第二次调用,它将从目前的UI元素的列表
原创要素:猫,狗蝙蝠, 食人魔在IE 第一个呼叫:猫,狗, 在IE第二个电话:空数组
我曾尝试克隆与$ .extend的阵列,它似乎并没有帮助。有没有一种方法可以保存原始UL中的子节点列表,而不是通过IE更改它们?
看来,IE使用指针引用,当我救子节点放入数组
那是什么语言?因为'result = someArray与索引0和n-2的元素'不是JavaScript。 – 2011-04-02 15:29:44
只是解释..并不意味着它是一个合适的代码。 它与从0到n-2迭代someArray相同,因为n是数组的长度。 for(i = 0; i
Kyle
2011-04-02 15:35:28
但你说*“上面的代码完全适用于Chrome和Firefox ......”*你可以看看为什么我认为这是实际的代码。 – 2011-04-02 15:38:23