通过树遍历选择元素的多个选择器


$('.myclass').parent().prev().prev();
$('.myclass').parent().prev();
$('.myclass');
$('.myclass').parent().next();
$('.myclass').parent().next().next();

如何通过jQuery在一行中选择所有元素?

我想到了这个解决方案,但希望有更好的办法:

$('.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.

您可以使用filter()index()

Live Demo

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');
});

像这样?

$.merge($('.myclass'), $('.myclass').parent().siblings()).fadeOut();

最新更新