web-dev-qa-db-ja.com

jQueryは属性を持つ最も近い親リンクを見つけます

.startpointから属性findmeの最も近いリンクを見つけたいのですが。構造:

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

どうすればそれを機能させることができますか?

9
dude

次のようなセレクターが必要になります。

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

これは、属性<li>を持つ要素を含む最も近いdata-findme要素を照会します。そこからアンカーをつかむには

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

使用する必要があります:

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

デモ

2
Milind Anantwar