I've come up with a solution to make the nested lists. I'd be happy
for any comments or pointers on the code as this is still all a bit
new for me and I think that I should be able to avoid the first
enumerate through.
Thanks
<ul id="header">
<li id="green" class="groupheader">
<ul>
<li class="green">grass</li>
<li class="green">trees</li>
</ul>
<li id="blue" class="groupheader">
<ul>
<li class="blue">sky</li>
<li class="blue">sea</li>
</ul>
<li id="yellow" class="groupheader">
<ul>
<li class="yellow">sun</li>
<li class="yellow">banana</li>
</ul>
</ul>
var savedClass="";
var groups=new Array;
/* For each list item*/
jQuery("ul#header li").each(function(){
/*Identify each distinct class (or group)*/
if (jQuery(this).attr("class")!=savedClass) {
savedClass=jQuery(this).attr("class");
/*Create an array of the group/class titles*/
groups.push(savedClass);
}
});
/*Loop through all class/groups*/
for( var i = 0; i < groups.length; i++ ) {
/*Create the group header*/
jQuery('ul#header').append('<li class="groupheader" id="' +
groups[i] + '">');
/*Add all the group members to the header and wrap them in a
nested
list**/
jQuery('ul#map_header li.' + groups[i]).appendTo("#" +
groups[i]).wrapAll("<ul></ul>");
}
On Feb 20, 9:10 pm, caroig <[EMAIL PROTECTED]> wrote:
> Thanks,
> I've used it a few time. What I'm not sure about is how to identify
> the first item in each class, create a ul header for it and then add
> all the items in the class below that. I can see how I could do it if
> I had an array of the distinct classes, but I'm not sure with jQuery
> if there is a quick way of getting hold of this, without enumerating
> through all items explicitly.
>
> On Feb 20, 8:36 pm, tlphipps <[EMAIL PROTECTED]> wrote:
>
> > Might want to look at the treeview
> > plugin:http://plugins.jquery.com/project/treeview
>
> > On Feb 20, 12:11 pm, caroig <[EMAIL PROTECTED]> wrote:
>
> > > I have an app which is producing a ul something like this:-
> > > <ul>
> > > <li class="green">grass</li>
> > > <li class="green">trees</li>
> > > <li class="blue">sky</li>
> > > <li class="blue">sea</li>
> > > <li class="yellow">sun</li>
> > > <li class="yellow">banana</li>
> > > </ul>
>
> > > I want to create a group the items by the class and then enable
> > > toggling of the group along the lines of:-
>
> > > + green
> > > - blue
> > > sky
> > > sea
> > > + yellow
>
> > > I guess my best solution is to create a nested list for each class. I
> > > have some javascript that does more or less the same thing, but I'm
> > > not sure how to identify each of the classes without iterating through
> >
> the whole lot in jQuery.