克隆一个div并插入相关父母中兄弟姐妹的最后一个孩子

时间:2015-09-08 16:55:39

标签: javascript jquery

我的标记是这样的: -

<div class="wrap">
    <div class="a"></div>
    <div class="a"></div>
    <button type="button">press</button>
</div>
.
.
.
<div class="wrap">
   <div class="z"></div>
   <button type="button">press</button>
</div>

我希望当我单击按钮时,它只克隆一个最近的兄弟姐妹,并在相对父div.wrap中的最后一个兄弟之后插入克隆div。我知道如何使用jQuery进行克隆,但我无法在相对父级中的最后一个兄弟之后插入克隆的div。

3 个答案:

答案 0 :(得分:2)

您可以使用.before()在按钮前插入,.prev()克隆按钮上方的div:

$('.wrap > button').on('click', function() {
    $(this).before( $(this).prev().clone() );
});

&#13;
&#13;
$('.wrap > button').on('click', function() {
    $(this).before( $(this).prev().clone() );
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
    <div class="a">A1</div>
    <div class="a">A2</div>
    <button type="button">press</button>
</div>

<div class="wrap">
   <div class="z">Z1</div>
   <button type="button">press</button>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果我理解正确,您应该可以使用.prev()查找上一个div,然后使用.after()附加克隆。

$(".wrap button").click(function() {
  var prev = $(this).prev("div");
  prev.after(prev.clone());
});
div {
  margin: 5px;
}

.a {
  height: 100px;
  width: 100px;
  background-color: green;
}

.z {
  height: 100px;
  width: 100px;
  background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="wrap">
    <div class="a"></div>
    <button type="button">press</button>
</div>
<div class="wrap">
   <div class="z"></div>
   <button type="button">press</button>
</div>

答案 2 :(得分:0)

如果我正确理解问题

$('button').on('click', function(){
  var siblings = $(this).siblings();
  siblings.last().clone().insertAfter(siblings.last() )
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="wrap">
    <div class="a">a1</div>
    <div class="a">a2</div>
    <button type="button">press</button>
</div>
.
.
.
<div class="wrap">
   <div class="z">z1</div>
   <button type="button">press</button>
</div>