简体   繁体   English

选择具有特定类的元素的父级

[英]Select the parent of an element which has a certain class

I built up a navigation bar which has the following sort of markup: 我建立了一个导航栏,其中包含以下标记:

<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>

In one my events here, I have the access to the a element on which the user clicked. 在我这里的事件中,我有权访问用户单击的a元素。

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

There are two things I want to get here for my purpose. 我想要达到目的有两件事。 The previous li tag which has the active class applied and secondly, the li tag for the a which has just been clicked. 之前的li标签已应用了active类,其次是刚刚单击的ali标签。 How can that be accessed? 如何访问?

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

Try this: 尝试这个:

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

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

  var currentClickedAnchorsParentLI = clickedLink.parent();

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM