$('a').each(function(i){
var n = Math.floor(i/10) % 4;
$(this).addClass(
n == 0 ? 'first' :
n == 1 ? 'second' :
n == 2 ? 'third' :
n == 3 ? 'fourth' : '');
});
or
var classNames = ['first', 'second', 'third', 'fourth'];
$('a').each(function(i){
var n = Math.floor(i/10) % 4;
$(this).addClass(classNames[n]);
});
This also gives you support for infinite expansion. An index of 45
will evaluate to class 'first', 51 to 'second', 85 to 'first' again
and so on.
cheers,
- ricardo
On Feb 26, 6:29 am, mkmanning <michaell...@gmail.com> wrote:
> And just as an exercise, here's the 'jQuery' way chained:
>
> $('a').filter(':lt(10)').addClass('first').end().filter(':gt(9):lt
> (10)').addClass('second').end().filter(':gt(19):lt(10)').addClass
> ('third').end().filter(':gt(29)').addClass('fourth');
>
> Not really any speed gain though.
>
> On Feb 26, 1:21 am, mkmanning <michaell...@gmail.com> wrote:
>
> > It's possible. Here's a more traditional way:
>
> > $('a').each(function(i,link){
> > if(i<10){$(link).addClass('first');}
> > else if (i>9 && i<20){$(link).addClass('second');}
> > else if (i>19&&i<30){$(link).addClass('third');}
> > else if (i>29&&i<40){$(link).addClass('fourth');}
> > })
>
> > Here's a more 'jQuery' way:
> > $('a:lt(10)').addClass('first');
> > $('a:gt(9):lt(10)').addClass('second');
> > $('a:gt(19):lt(10)').addClass('third');
> > $('a:gt(29):lt(10)').addClass('fourth');
>
> > Which is better? The first takes a little over half as long as the
> > second.
>
> > On Feb 25, 10:45 pm, Nic Hubbard <nnhubb...@gmail.com> wrote:
>
> > > I have a list of links, around 40 of them. I want to apply classes to
> > > groups of them. So, items 1-10 I want to apply a class to, then
> > > 11-20, then 21-30 and 31-40, each of these groups should have their
> > > own class.
>
> > > Is something like this possible? I looked through the jQuery
> > > selectors and could not find a solution.
No comments:
Post a Comment