[英]Reposition elements in html with jquery
我不知道如何以最佳方式实现这一目标:假设我有:
<div class="parent"> <div class="child"></div> </div> <div class="parent"> <div class="child"></div> </div> <div class="parent"> <div class="child"></div> </div>
我想将每个“孩子”都移到其父母之后。
<div class="parent"></div> <div class="child"></div> <div class="parent"></div> <div class="child"></div> <div class="parent"></div> <div class="child"></div>
我该如何实现?
更新:另外,如何排除具有某些属性的父母? 例如,我需要排除那些data-anchor = 2和data-anchor = 3的设备,但我不知道该怎么做。
$(".parent").each(function(){
$(this).after($(".child", this));
});
JSFiddle: https ://jsfiddle.net/TrueBlueAussie/onsb12jx/
注意: $(".child", this)
只是$(this).find(".child")
的较短版本
排除元素可以使用.not()
或:not()
或过滤器:
例如使用.not()
$(".parent").not('[data-anchor=2],[data-anchor=3]').each(function(){
$(this).after($(".child", this));
});
或使用:not
伪选择器
$(".parent:not([data-anchor=2],[data-anchor=3])").each(function(){
$(this).after($(".child", this));
});
或使用filter()
函数
$(".parent").filter(function(){
return $(this).data('anchor') == "2" || $(this).data('anchor') == "3";
}).each(function(){
$(this).after($(".child", this));
});
您可以通过遍历.child
元素并使用insertAfter()
将它们放在最接近的父.parent
元素之.child
实现此.parent
:
$('.parent .child').each(function() {
$(this).insertAfter($(this).closest('.parent'));
});
采用
$(".parent").each(function() {
$(this).after($(this).find(".child"));
});
after()
将帮助您将元素放置在所选元素之后
您可以将.after(fn)
方法与函数一起用作参数以返回所需的行为,它的好处是不必显式使用循环,这样,它将在内部为您完成此操作:
$('.parent').after(function() { return $('.child', this); });
.parent{border:solid red 3px;} .child{border:solid 3px green; margin:3px 0;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="parent"> <div class="child">child</div> parent </div> <div class="parent"> <div class="child">child</div> parent </div> <div class="parent"> <div class="child">child</div> parent </div>
您可以使用detach
方法这样做,如下所示:
$(".parent").each(function() {
$(this).after($(this).find(".child").detach());
});
您可以通过检查年龄元素来检查结构:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.