I have this beautiful jquery script that takes list of lis and groups them under ul 4 li each.
But some of the lis have a special class: <li class="prefslidefeatured">
I want this special li to stay at the top of the list thus in the first ul as first li. There can be several lis tagged featured so I want all of them to stay at the beginning of the list thus first ul.
Is this script I have easily modifiable to accommodate this new feature? Any ideas how to achieve this?
I also made jsfiddle for quick dirty test 🙂 http://jsfiddle.net/sandrodz/5at2G/
//This is for footer slider, it rewrites 1 ul into several uls that contain 4 li max.
$(document).ready(function(){
// get the container, useful for later too...
var container = $(".prefooterslides");
// get all available UL and LI elements...
var li_elements = container.find("LI").clone();
// remove the current content so that we can rebuild it for the slider...
container.find("UL").remove();
// build the slider container...
var slide_container = $("<div />");
slide_container.addClass("slides_container");
// tricky part: looping through the LI's and building each of the slides...
// first create some helpful variables...
var li_elements_per_slide = 4;
var li_counter = 0;
// create the first slide, with a UL to hold the LI's...
var current_li_div = $("<div />");
current_li_div.append($("<ul />"));
// loop through the LI's...
li_elements.each(function(index, element){
li_counter++;
var current_li = $(element).clone();
current_li_div.find("UL").append(current_li);
if (li_counter % li_elements_per_slide == 0)
{
// we've hit 4 in this list, so add the slide and make
// a new one, using same code as before...
container.append(current_li_div);
current_li_div = $("<div />");
current_li_div.append($("<ul />"));
}
});
// we might have an uneven number of LI's, so we need to check for this...
if (li_counter % li_elements_per_slide != 0)
container.append(current_li_div);
// all that's left to do is to initialise the slider script...
$("#prefooterindex").slides({
container: 'prefooterslides',
generatePagination: false
});
});
Try this:
Change:
to:
It gets all of the featured
lis first, then adds all of the non-featuredlis to the end of the array. The.each()further down now iterates over the featured items first, meaning they get added to the top-mostuls.Fiddle: http://jsfiddle.net/5at2G/1/