2013-09-09 3 views
0

Мы имеем следующую ситуацию:Параллельный элемент селектора

<ul> 
    <li>Button 1</li> 
    <li class="active">Button 2</li> 
    <li>Button 3</li> 
    <li>Button 4</li> 
</ul> 

теперь следующий код, который обрабатывает его:

$('.tab-menu li').on('click', function() { 
     $($($(this).closest('.tab-menu')).find('li')).removeClass('active'); 
     $(this).addClass('active'); 
    }); 

это работает, но есть функция JQuery, который выбирает все элементы «параллельные» ? Я хочу, чтобы эта Часть

$($($(this).closest('.tab-menu')).find('li')).removeClass('active'); 

сделать короче. Я знаю «toggleClass», но это работает только с щелчком. Есть ли более короткий метод для выбора всех параллельных элементов? (В этом siutation все 'li', которые принадлежат к специфической 'ul');

+1

Не является, что всей первой частью лишней? '$ ($ (this) .closest ('. tab-menu')). find ('li'))' уже 'this' – tymeJV

+1

нет, это будет список всех' li' под '. tab-menu', а не только тот, который в настоящее время повторяется над – DGS

+0

@DGS. Но он повторяет все. Это бессмысленный код. – Archer

ответ

4

Попробуйте это, используя .siblings()

$(this).addClass('active').siblings().removeClass('active'); 

DEMO с OnClick