Had the need to create a nice UX (user experience) by moving a boostrap “div” up and down within a bootstrap “row” collection on a website.
Always love sharing some elegant code, so check out this jsFiddle to see it working…
https://jsfiddle.net/lancelarsen/814rteua/
https://jsfiddle.net/lancelarsen/w4fob4pv/ (variant for nested bootstrap divs)
JavaScript (requires jQuery)
[sourcecode language="javascript"]
$(".moveup").on("click", function() {
var elem = $(this).closest("div");
elem.prev().before(elem);
});
$(".movedown").on("click", function() {
var elem = $(this).closest("div");
elem.next().after(elem);
});
$(".movetop").on("click", function() {
var elem = $(this).closest("div");
elem.siblings().first().before(elem);
});
$(".movebottom").on("click", function() {
var elem = $(this).closest("div");
elem.siblings().last().after(elem);
});
[/sourcecode]
CSS
[sourcecode language="css"]
.updownrow {
padding: 15px;
}
.updownbtn {
font-size: 25px;
}
[/sourcecode]
HTML (requires Font Awesome – https://fortawesome.github.io/Font-Awesome/)
[sourcecode language="html" padlinenumbers="true"]
<div class="row">
<div class="col-sm-12 updownrow" style="background: lightblue;">
<button type="button" class="updownbtn movetop fa fa-angle-double-up"></button>
<button type="button" class="updownbtn moveup fa fa-angle-up"></button>
<button type="button" class="updownbtn movedown fa fa-angle-down"></button>
<button type="button" class="updownbtn movebottom fa fa-angle-double-down"></button>
Row 1
</div>
<div class="col-sm-12 updownrow" style="background: lightgreen;">
<button type="button" class="updownbtn movetop fa fa-angle-double-up"></button>
<button type="button" class="updownbtn moveup fa fa-angle-up"></button>
<button type="button" class="updownbtn movedown fa fa-angle-down"></button>
<button type="button" class="updownbtn movebottom fa fa-angle-double-down"></button>
Row 2
</div>
<div class="col-sm-12 updownrow" style="background: lightpink;">
<button type="button" class="updownbtn movetop fa fa-angle-double-up"></button>
<button type="button" class="updownbtn moveup fa fa-angle-up"></button>
<button type="button" class="updownbtn movedown fa fa-angle-down"></button>
<button type="button" class="updownbtn movebottom fa fa-angle-double-down"></button>
Row 3
</div>
<div class="col-sm-12 updownrow" style="background: lightseagreen;">
<button type="button" class="updownbtn movetop fa fa-angle-double-up"></button>
<button type="button" class="updownbtn moveup fa fa-angle-up"></button>
<button type="button" class="updownbtn movedown fa fa-angle-down"></button>
<button type="button" class="updownbtn movebottom fa fa-angle-double-down"></button>
Row 4
</div>
</div>
[/sourcecode]