因此,我一直在浏览我的jQuery,并一直在使用.get()方法。我知道您可以使用它将DOM元素放入像$('p').get();这样的数组中,然后访问它们的属性,例如console.log($('p').get(0).innerText);。但我也注意到,当我试图抓取一些元素时,将它们放入一个数组并输出到其他地方,它实际上将它们从DOM中删除。
例如
var input = $('ul#input li').get();
$('ul#output').append(input.reverse());<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<ul id="input">
<li>1 in line</li>
<li>2 in line</li>
<li>3 in line</li>
<li>4 in line</li>
<li>5 in line</li>
<li>6 in line</li>
<li>7 in line</li>
<li>8 in line</li>
</ul>
<ul id="output"></ul>
.get()获取li元素并将它们放入数组i reverse()数组并输出到另一个ul
问题,,我想知道为什么它把它们从DOM中删除了?是因为“仅仅是因为”,我对此没意见。经过一段时间的googling,我想我会来问专家。这里没有bug,只是试图了解该方法是如何工作的。API接口没有涵盖这一点。
感谢任何能指引我走向正确方向的人。
发布于 2015-06-03 14:07:14
这是故意的行为。任何类型的DOM操作(.append()、.prepend()、.insertAfter()等)方法获取已传递的实例并将其放置在您正在定义的位置(不能同时在two+ places中设置一个DOM节点)。
如果您正在寻找您期望的行为,请先打电话给.clone(),以便您有一个新的副本放在您想要的地方。这将保留第一个实例(在ul#input中找到的一个实例),同时允许您将另一个实例放置在所需的位置(ul#out)。
$('ul#out').append(
$('ul#in li').clone().get().reverse()
);<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="in">
<li>1st Item</li>
<li>2nd Item</li>
<li>3rd Item</li>
</ul>
<ul id="out">
</ul>
https://stackoverflow.com/questions/30622438
复制相似问题