2013-06-28 5 views
0

Я создал навигационную панель, которая имеет следующий вид разметки:Выберите родительский элемент, который имеет определенный класс

<ul class="nav"> 
    <li class="active"><a href="blah.html">S</a></li> 
    <li><a href="blah1.html">S1</a></li> 
    <li><a href="blah2.html">S2</a></li> 
    <li><a href="blah3.html">S3</a></li> 
</ul> 

В одном моих событиях здесь, у меня есть доступ к a элементу на который пользователь нажал.

$('.nav').on('click', 'li a', function(){ 
var clickedLink = $(this); 
var prevActiveLI = ? 
var currentClickedAnchorsParentLI = ? 
}); 

Есть две вещи, которые я хочу получить здесь для своей цели. Предыдущий тег li, который имеет класс active, и, во-вторых, тег li для только что щелкнутого a. Как можно получить доступ?

ответ

1

Попробуйте это:

$('.nav').on('click', 'li a', function(){ 
    var clickedLink = $(this); 
    var prevActiveLI = $('.active', $clickedLink.closest('.nav')); 
    var currentClickedAnchorsParentLI = $clickedLink.closest('li'); 
}); 
1
$('.nav').on('click', 'li a', function(){ 
    var clickedLink = $(this); 
    var prevActiveLI = clickedLink.closest('ul.nav').find('li.active'); 
    var currentClickedAnchorsParentLI = clickedLink.parent(); 
}); 
1
var $prevLi, 
$currentLi 
; 

$('.nav').on('click', 'li a', function(){ 
var clickedLink = $(this); 
if($currentLi) { 
    $prevLi = $currentLi; 
} 
$currentLi = clickedLink.parent(); 
}); 
0
$('.nav').on('click', 'li a', function(){ 
    var clickedLink = $(this); 

    var currentClickedAnchorsParentLI = clickedLink.parent(); 

    if(!currentClickedAnchorsParentLI.hasClass("active")) 
    var prevActiveLI = currentClickedAnchorsParentLI.siblings(".active").first(); 
    //else 
    // 
});