所以我一直在刷我的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
个元素并将它们放入数组reverse()
数组并输出到另一个ul
问题
我想知道为什么它会从DOM
删除它们?是“只是因为”,我很酷。在googling
一段时间之后,我想我会来问专家。这里没有错误,只是试图了解该方法的工作原理。 API没有涵盖这一点。
非常感谢任何可以指引我走向正确方向的人。
答案 0 :(得分:2)
这是预期的行为。任何类型的DOM操作(.append()
,.prepend()
,.insertAfter()
等)方法都会将传递的实例放在您定义的位置(您不能拥有)单个DOM节点同时位于两个+位置。)
如果您正在寻找您期望的行为,请先致电.clone()
,以便将新的副本放在您喜欢的位置。这将保留第一个实例(一个在ul#input
内找到),同时允许您将另一个实例放置在所需位置(ul#out
)。
$('ul#out').append(
$('ul#in li').clone().get().reverse()
);
&#13;
<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>
&#13;