2015-01-16 8 views
4

Я хотел бы найти ближайшую ссылку с атрибутом findme от детей .startpoint. Состав: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 не аа родительский элемент вместо того, чтобы это еще один ребенок родитель, мой пример не найти элемент. Пример: 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'). Ближайший ('li: has ([data-findme])')' Также не уверен, почему вы переключаетесь между одиночными и двойными тиками. По возможности используйте одиночный. –

2

Вы должны использовать:

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

Demo

Смежные вопросы