我需要获取“parent parent adjacent”元素的ID。我到目前为止我可以选择包含ID的元素。现在我只需要输出ID。
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>
答案 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);
});