2015-01-16 34 views
4

我想从儿童.startpoint中找到与属性findme最近的链接。 结构:jQuery找到与属性最接近的父链接

<ul> 
    <li><a href="#">Point one</a></li> 
    <li><a href="#" data-findme="yipi">Point one</a> 
     <ul> 
      <li><a href="#">Hello</a></li> 
      <li><a href="#">Hello</a> 
       <ul> 
        <li><a href="#" class="startpoint">My Startpoint</a></li> 
       </ul> 
      </li> 
     </ul> 
    </li> 
</ul> 

的JavaScript(jQuery的):

$(document).ready(function(){ 
    console.log(
     $('.startpoint').closest("*[data-findme]") 
    ); 
}); 

既然问题是,该元素data-findme不是AA父元素取而代之的则是父母的另一个孩子,我的例子不会找到元素。 示例:http://jsfiddle.net/rjhgvxoe/

我该如何才能使其工作?

回答

7

你会需要这样的选择:

$('.startpoint').closest("li:has(*[data-findme])") 

这将查询其包含的元素最接近<li>元素与属性data-findme。从那里抓住锚点

$('.startpoint').closest("li:has(*[data-findme])").children('[data-findme]') 
+0

星号是不需要的。这工作正常: '$('。startpoint')。closest('li:has([data-findme])')' 也不知道为什么你在单和双滴答之间切换。如有可能,请使用单个。 –

2

您需要使用:

$('.startpoint').closest("ul").find('[data-findme]') 

Demo