jQuery найти ближайшую родительскую ссылку с атрибутом

Я хочу найти ближайшую ссылку с атрибутом findme от детей .startpoint. Структура:

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

Как я могу заставить его работать?


person dude    schedule 16.01.2015    source источник


Ответы (2)


Вам понадобится такой селектор:

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

Это запросит ближайший элемент <li>, который содержит элемент с атрибутом data-findme. Чтобы взять якорь оттуда

$('.startpoint').closest("li:has(*[data-findme])").children('[data-findme]')
person jAndy    schedule 16.01.2015
comment
Звездочка не нужна. Это отлично работает: $('.startpoint').closest('li:has([data-findme])') Также не знаю, почему вы переключаетесь между одинарными и двойными тиками. По возможности используйте single. - person John Vandivier; 22.03.2017

Вам нужно использовать:

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

Демо

person Milind Anantwar    schedule 16.01.2015