2016-08-01 63 views
2

当我点击a元素时,我需要获得第一个最接近的(最近的)li父元素的idjQuery:按类型获取第一个最接近的“父”?

<ul> 
    <li id="wrong1"> 
     <ul> 
      <li id="p1"> 
      <a href="" class='btn'></a> 
      </li> 
      <li id="p2"> 
      <a href="" class='btn'>Click here!</a> 
      </li> 
      <li id="p3"> 
      <a href="" class='btn'></a> 
      </li> 
     </ul> 
    </li> 
    <li id="wrong2"></li> 
</ul> 

当我点击Click here!,我应该得到li#p2元素。

我用:

$('a.btn').click(function(e) { 
    var GotIt = $(this).parents().find('li').attr('id'); 
}); 

但显然没有奏效。我也试过closest(),结果也一样。

如何正确获取元素?

+1

你试过'最近的(“li”)吗? –

+0

[jQuery parent(),parents()和closest()函数之间的差异可能重复](http://stackoverflow.com/questions/9193212/difference-between-jquery-parent-parents-and-closest-functions) –

回答

3

你应该写你的脚本

$('a.btn').click(function(e) { 
    var GotIt = $(this).closest('li').attr('id'); 
}); 

,因为“李”是你的“a”元素的直接父,你还是你还可以用像

$('a.btn').click(function(e) { 
    var GotIt = $(this).parent().attr('id'); 
}); 
2

您可以使用closest(type),即:

$('a.btn').click(function(e) { 
    var li = $(this).closest("li"); 
    alert(li.attr("id")) 
}); 

小提琴:https://jsfiddle.net/f14vjLmc/