Reputation: 4990
$('.myclass').parent().prev().prev();
$('.myclass').parent().prev();
$('.myclass');
$('.myclass').parent().next();
$('.myclass').parent().next().next();
How to select all this elements in only one line via jQuery ?
I thought of this solution, but hope that there is something better :
$('.myclass').parent().prev().prev().addClass('select_me');
$('.myclass').parent().prev().addClass('select_me');
$('.myclass').addClass('select_me');
$('.myclass').parent().next().addClass('select_me');
$('.myclass').parent().next().next().addClass('select_me');
$('.select_me').fadeOut(); // I select all the previous elements in only 1 line.
Upvotes: 1
Views: 97
Reputation: 148110
You can do it using filter()
and index()
idx = $('.myclass').parent().index();
$('.myclass').parent().siblings().addBack().filter(function(){
return $(this).index() > idx -3 && $(this).index() < idx + 3;
}).addClass('select_me');
$('.myclass').each(function(){
currentObject = $(this);
parent = $(this).parent();
$(this).parent().siblings().filter(function(){
return $(this).index() > parent.index() -3 && $(this).index() < parent.index() + 3;
}).add(currentObject).addClass('select_me');
});
Upvotes: 3
Reputation: 8192
Like this?
$.merge($('.myclass'), $('.myclass').parent().siblings()).fadeOut();
Upvotes: 1