2015-01-16 50 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