Is there a simple way to reorder my list items using a class?
I want to specify a class to feature those items at the top of the list first, with other list items listed below.
<ul class="order-me">
<li class="">normal content</li>
<li class="">normal content</li>
<li class="featured">featured content</li>
<li class="">normal content</li>
<li class="featured">featured content</li>
<li class="">normal content</li>
<li class="">normal content</li>
</ul>
Desired output:
<ul class="order-me">
<li class="featured">featured content</li>
<li class="featured">featured content</li>
<li class="">normal content</li>
<li class="">normal content</li>
<li class="">normal content</li>
<li class="">normal content</li>
<li class="">normal content</li>
</ul>
Thanks!
You can prepend the .featured
elements to their containing ul
to move them to the top of the list. Try this:
$('.featured').prependTo('.order-me');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="order-me">
<li class="">normal content</li>
<li class="">normal content</li>
<li class="featured">featured content</li>
<li class="">normal content</li>
<li class="featured">featured content</li>
<li class="">normal content</li>
<li class="">normal content</li>
</ul>
To add to @Rory McCrossan's answer, I've added the ability to sort it with navigation buttons
$("ul.order-nav li").click(function() {
// Find the Data attribute from unordered list [.order-nav]
var sortClass = '.' + $(this).data('sort-by');
// Prepent the [li] with matching class to top of [ul]
$(sortClass).prependTo('.order-me');
});
Here is the Fiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With