首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery的.get()窃取了我的元素。好吧,但为什么?

问jQuery的.get()窃取了我的元素。好吧,但为什么?
EN

Stack Overflow用户
提问于 2015-06-03 14:04:47
回答 1查看 45关注 0票数 2

因此,我一直在浏览我的jQuery,并一直在使用.get()方法。我知道您可以使用它将DOM元素放入像$('p').get();这样的数组中,然后访问它们的属性,例如console.log($('p').get(0).innerText);。但我也注意到,当我试图抓取一些元素时,将它们放入一个数组并输出到其他地方,它实际上将它们从DOM中删除。

例如

​

代码语言:javascript
复制
   var input = $('ul#input li').get();
    $('ul#output').append(input.reverse());
代码语言:javascript
复制
<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接口没有涵盖这一点。

感谢任何能指引我走向正确方向的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-03 14:07:14

这是故意的行为。任何类型的DOM操作(.append()、.prepend()、.insertAfter()等)方法获取已传递的实例并将其放置在您正在定义的位置(不能同时在two+ places中设置一个DOM节点)。

如果您正在寻找您期望的行为,请先打电话给.clone(),以便您有一个新的副本放在您想要的地方。这将保留第一个实例(在ul#input中找到的一个实例),同时允许您将另一个实例放置在所需的位置(ul#out)。

​

代码语言:javascript
复制
$('ul#out').append(
  $('ul#in li').clone().get().reverse()
);
代码语言:javascript
复制
<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>

​

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30622438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档