【问题标题】:jQuery append duplicates contentjQuery追加重复内容
【发布时间】:2019-05-25 20:53:33
【问题描述】:

我是 jquery 的新手。我需要帮助移动内容。我正在使用附加方法。

我希望能够将每个 .links 元素移动到 .node 元素内的每个 .submitted 元素中。现在 append 正在将所有三个 .links 添加到每个 .selected 元素。我在下面提供了代码和指向 JSFiddle 的链接。

感谢您的帮助

Click here to view code in JSFiddle

jQuery

​$('.links').appendTo('.submitted');​​​​​​​​​​​​​​​​​

HTML

<div id="wrapper">
    <div class="node" class="clearfix">
        <h2>Node Title 1</h2>
        <div class="submitted">September 30</div>
        <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin egestas mi, ac luctus orci eleifend pharetra</div>
        <div class="links">
            <a href="#">Node 1 Link 1</a> | 
            <a href="#">Node 1 Link 2</a>
        </div>
    </div>

    <div class="node" class="clearfix">
        <h2>Node Title 2</h2>
        <div class="submitted">September 29</div>
        <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin egestas mi, ac luctus orci eleifend pharetra</div>
        <div class="links">
            <a href="#">Node 2 Link 1</a> | 
            <a href="#">Node 2 Link 2</a>
        </div>
    </div>

    <div class="node" class="clearfix">
        <h2>Node Title 3</h2>
        <div class="submitted">September 26</div>
        <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin egestas mi, ac luctus orci eleifend pharetra</div>
        <div class="links">
            <a href="#">Node 3 Link 1</a> | 
            <a href="#">Node 3 Link 2</a>
        </div>
    </div>
</div>​

CSS

#wrapper { width:600px; margin:0 auto; }
h2 { clear:both; }
.node { border-bottom:1px solid #CCCCCC; }
.submitted { float:left; width:200px; padding:10px; background-color:#CCCCCC; }
.content { float:left; width:360px; padding:10px; }

【问题讨论】:

  • 什么事件会打动他们?另请注意,您可以像这样使用多个类:class="node clearfix"(由单个空格分隔)。
  • 元素被移动,但被多次添加jsfiddle
  • 不,他们不是。唯一的重复是您的内容。定义的每个链接部分都显示“链接 1”。查看此更新:jsfiddle.net/SGgM8/3

标签: jquery append


【解决方案1】:

当你这样做时

$('.links').appendTo('.submitted')

您正在选择 all.links 的元素并将它们添加到 all.submitted 的元素中

编辑

现在我明白你想要什么了:)

这解决了它

$(".links").each(function(){
    $(this).appendTo( $(this).prevAll('.submitted') );
});

在这里看到它的工作:http://jsfiddle.net/RASG/SGgM8/8/

【讨论】:

  • this 在您的代码中指的是窗口或文档对象而不是 .links 元素。这个小提琴 jsfiddle.net/ZUxgU 和你的 working 小提琴有什么区别吗?
  • 我更新了 jsFiddle 示例 JSFIDDLE 我想将每组链接移动到每个节点的每个提交的 div 中。
  • 塞巴斯蒂安佩雷斯给了我解决方案。对不起,如果我的描述不清楚。谢谢你的时间。并不是要降低您的答案。
  • 这个答案肯定比 OP 接受的答案更优雅
【解决方案2】:

试试下面的。

$('.links').each(function() {
   var $this = $(this);
   $this.appendTo($this.siblings('.submitted'));
})

http://jsfiddle.net/PwJNe/

请注意,您的标记无效,请更改:

<div class="node" class="clearfix">

到:

<div class="node clearfix">

【讨论】:

  • 我更新了 jsFiddle 示例 JSFIDDLE 我想将每组链接移动到每个节点的每个提交的 div 中。
  • @Adrian 您是否尝试过此答案中的代码?看来它可以满足您的需求。
【解决方案3】:

如果我理解正确,你有这个:

<div class="node" class="clearfix">
    <h2>Node Title 3</h2>
    <div class="submitted">September 26</div>
    <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin egestas mi, ac luctus orci eleifend pharetra</div>
    <div class="links">
        <a href="#">Link 1</a> | 
        <a href="#">Link 1</a>
    </div>
</div>

而你希望它以这样的方式结束:

<div class="node" class="clearfix">
    <h2>Node Title 3</h2>
    <div class="submitted">
        September 26
        <a href="#">Link 1</a> | 
        <a href="#">Link 1</a>
    </div>
    <div class="content">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi sollicitudin egestas mi, ac luctus orci eleifend pharetra</div>
    <div class="links">
    </div>
</div>

将子元素从 div.links 移动到 div.submitted。

如果那是正确的,那么你可以这样做:

$(".node").each( function() {
     //Get the links
     var links = $(this).children(".links").html();
     //Remove the links from the .links div
     $(this).children(".links").html("");
     //Append the links to the .submitted div
     $(this).children(".submitted").append(links);
});

这将遍历 DOM 中找到的每个 .node 元素。 .each 块内部的 $(this) 指的是 .node 元素。

希望对你有帮助!

【讨论】:

  • 谢谢!是的,这正是我想要的
【解决方案4】:

**这是使用 Jquery 创建数组副本的方法:**

让数组 = $('li a'); let copyOfArray = array.clone().slice();

【讨论】:

    【解决方案5】:

    三个链接.links被添加到每三个.submitted元素

    要仅添加一个,请使用 .first() 或一些 jquery 过滤器进行限制

    从您的小提琴中分叉的示例:http://jsfiddle.net/LMbzY/

    【讨论】:

    • 投反对票是因为我的答案不是在其父 .submitted 中附加每个 .links,而是取第一个链接并将它们放在每个 .submitted 中。 (回答太快了:))(如果选民发表评论会更优雅......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 2018-01-16
    • 1970-01-01
    • 2018-02-01
    相关资源
    最近更新 更多