jQuery :按类型获取第一个最接近的 "parent"?
jQuery : Get first closest "parent" by type?
当我单击 a
元素时,我需要获取第一个最近(最近)li
父元素的 id
。
<ul>
<li id="wrong1">
<ul>
<li id="p1">
<a href="" class='btn'></a>
</li>
<li id="p2">
<a href="" class='btn'>Click here!</a>
</li>
<li id="p3">
<a href="" class='btn'></a>
</li>
</ul>
</li>
<li id="wrong2"></li>
</ul>
当我点击 Click here!
时,我应该得到 li#p2
元素。
我用过:
$('a.btn').click(function(e) {
var GotIt = $(this).parents().find('li').attr('id');
});
但显然没有用。我也试过 closest()
也是同样的结果。
请问如何正确获取元素?
您应该将脚本编写为
$('a.btn').click(function(e) {
var GotIt = $(this).closest('li').attr('id');
});
因为 "li" 是你的 "a" 元素的直接父元素,所以你也可以使用 like
$('a.btn').click(function(e) {
var GotIt = $(this).parent().attr('id');
});
可以使用closest(type)
,即:
$('a.btn').click(function(e) {
var li = $(this).closest("li");
alert(li.attr("id"))
});
Fiddle: https://jsfiddle.net/f14vjLmc/
注意!
虽然给定的答案适用于这个(你的)案例,但它们是错误的 - 关于问题:
"the closest parent with [what ever]"
正确的是
$element.parent().closest([what ever])
closest()
包含元素本身,只要它不是 [what ever],脚本也可以正常工作,但是......
这是许多脚本中的潜在错误,在 DOM 之后出现 - 在开发后期进行设计更改。
文档说 closest()
:
For each element in the set, get the first element that
matches the selector by testing the element itself and traversing up
through its ancestors in the DOM tree.
(我加粗)
当我单击 a
元素时,我需要获取第一个最近(最近)li
父元素的 id
。
<ul>
<li id="wrong1">
<ul>
<li id="p1">
<a href="" class='btn'></a>
</li>
<li id="p2">
<a href="" class='btn'>Click here!</a>
</li>
<li id="p3">
<a href="" class='btn'></a>
</li>
</ul>
</li>
<li id="wrong2"></li>
</ul>
当我点击 Click here!
时,我应该得到 li#p2
元素。
我用过:
$('a.btn').click(function(e) {
var GotIt = $(this).parents().find('li').attr('id');
});
但显然没有用。我也试过 closest()
也是同样的结果。
请问如何正确获取元素?
您应该将脚本编写为
$('a.btn').click(function(e) {
var GotIt = $(this).closest('li').attr('id');
});
因为 "li" 是你的 "a" 元素的直接父元素,所以你也可以使用 like
$('a.btn').click(function(e) {
var GotIt = $(this).parent().attr('id');
});
可以使用closest(type)
,即:
$('a.btn').click(function(e) {
var li = $(this).closest("li");
alert(li.attr("id"))
});
Fiddle: https://jsfiddle.net/f14vjLmc/
注意!
虽然给定的答案适用于这个(你的)案例,但它们是错误的 - 关于问题:
"the closest parent with [what ever]"
正确的是
$element.parent().closest([what ever])
closest()
包含元素本身,只要它不是 [what ever],脚本也可以正常工作,但是......
这是许多脚本中的潜在错误,在 DOM 之后出现 - 在开发后期进行设计更改。
文档说 closest()
:
For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.
(我加粗)