【问题标题】:remove Div and appear it another place [duplicate]删除 Div 并出现在另一个地方[重复]
【发布时间】:2013-08-11 17:06:31
【问题描述】:

我希望出现 4 个divs。当我单击任何divs 时,我希望div 移动到最后。

因此,例如,如果第一个 div 被点击,它应该成为最后一个 div。

HTML:

<a href='#'><div id="pop0" class="pop"></div></a>
<a href='#'><div id="pop1" class="pop"></div></a>
<a href='#'><div id="pop2" class="pop"></div></a>
<a href='#'><div id="pop3" class="pop"></div></a>

CSS:

#pop0 {
    width: 100px;
    height: 100px;
    background: yellow;
    position: relative;
}
#pop1 {
    width: 100px;
    height: 100px;
    background: red;
    position: relative;
}
#pop2 {
    width: 100px;
    height: 100px;
    background: blue;
    position: relative;
}
#pop3 {
    width: 100px;
    height: 100px;
    background: green;
    position: relative;
}

jQuery:

var id = "pop0";
$(".pop").bind('click', function(){
    var oldId = $(this).attr('id');
    $(this).attr('id', id);
    id = oldId;
})

Demo

【问题讨论】:

  • 男人...英语在这方面很糟糕。真的很难理解你在说什么……你能编辑问题来澄清一下吗?
  • 你的小提琴应该有一个pop0元素吗?
  • 如果你查看demo,css中有4个id。我需要显示所有 div,但是当我单击一个 div 时,它应该删除并添加其他 div 的末尾。 div 是 pop0、pop1、pop2、pop3。当点击pop0时,那些div必须是这样的,pop1,pop2,pop3,pop0。
  • 你刚刚问了这个问题:stackoverflow.com/questions/18151488/…
  • 我在这个问题上获得了 30 次小声望,我怎么最终得到了正确的答案。

标签: javascript jquery css


【解决方案1】:

使用你的代码很糟糕,因为你没有任何 DOM 包装器元素......(除了正文)

$(".pop").bind('click', function(){
    $('body').append($(this).parent());
})

DEMO

【讨论】:

  • 这不会移动 div,只是复制它。
  • @John 什么复制 DIV ???我不是在这里克隆...你看,我给你做了一个演示,或者你能解释一下你在说什么吗?
  • 抱歉,我在演示中看到,-1 被删除了。
  • 谢谢烤,这就是我想要的。
【解决方案2】:

试试这个代码

JS

$(".pop").on('click', function() {
    // Get the closest anchor container
    var $a =$(this).closest('a');
    // Insert after the last anchor container
    $a.insertAfter('a:last')
})

另外,bind 已被 on 取代。使用它来绑定事件处理程序。

通过不重复相同的样式,您的 html 也可以稍微清理一下。将常用样式移到同一个类中。

CSS

.pop{
    width: 100px;
    height: 100px;
    position: relative;
}

#pop0 {
    background: yellow;
}
#pop1 {
    background: red;
}
#pop2 {
    background: blue;
}
#pop3 {
    background: green;
}

Check Fiddle

【讨论】:

  • 谢谢 Sushanth,我也喜欢你的回答。它有效。
  • 很高兴有帮助:)
【解决方案3】:

也许只是分离项目并将其附加到容器的末尾?

$(document).on('click','.pop',null,function(){
    var $pop = $(this);
    var $parent = $pop.parent();
    $pop.detach();
    $parent.append($pop);
});

http://jsfiddle.net/rtpt5/3/

【讨论】:

  • 最好是 .detach() 元素来保留处理程序
  • 感谢 brad ii 喜欢您的回答。
  • 好主意@roasted,我更新了我的答案。
  • jsfiddle.net/ramswarnak/6tLEg/1,有人可以编辑这个小提琴。但不要更改 html 或 css。我只需要javascript。
猜你喜欢
  • 2023-03-16
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多