来自父母父亲相邻元素的ID

时间:2015-06-18 15:28:51

标签: javascript jquery html

我需要获取“parent parent adjacent”元素的ID。我到目前为止我可以选择包含ID的元素。现在我只需要输出ID。

JSFiddle

jQuery的:

$(function(){
    var a = $('.function').closest('li').find('a:first').attr('id');
    console.log(a);
});

HTML:

<ul>
    <li>
        <a id="get-this-ID-1">
            Link 1.
        </a>
        <div>
            <div class="function">
                Function 1 here.
            </div>
            <a>Link2 1.</a>
        </div>
    </li>
    <li>
        <a id="get-this-ID-2">
            Link 2.
        </a>
        <div>
            <div class="function">
                Function 2 here.
            </div>
            <a>Link2 2.</a>
        </div>
    </li>
    <li>
        <a id="get-this-ID-3">
            Link 3.
        </a>
        <div>
            <div class="function">
                Function 3 here.
            </div>
            <a>Link2 3.</a>
        </div>
    </li>
</ul>

3 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。问题是attr返回集合中第一个元素的值。您应该遍历集合并单独获取每个元素的ID。

以下是使用map方法生成ID数组的示例:

var a = $('.function').closest('li').find('a:first').map(function() {
    return this.id;
}).get();

您还可以使用:has选择器:

$('li:has(.function)').children('a').each(function() {
    console.log(this.id);
});

答案 1 :(得分:1)

尝试一下:使用 map()

var a = $('.function').map(function () {
    return $(this).closest("li").find(" > a")[0].id;

}).get();

<强> updated fiddle

答案 2 :(得分:0)

您可以尝试从first更改为first-child

$(function () {
    var a = $('.function').closest('li').find('a:first-child').attr('id');
    console.log(a);
});

小提琴:http://jsfiddle.net/ztuttzuL/3/