夏期劇*_*期劇場 4 jquery parent-child closest
当我单击元素时,我需要获取id第一个最近(最近)li父a元素的 。
<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>
Run Code Online (Sandbox Code Playgroud)
当我点击时Click here!,我应该得到li#p2元素。
我用了:
$('a.btn').click(function(e) {
var GotIt = $(this).parents().find('li').attr('id');
});
Run Code Online (Sandbox Code Playgroud)
但显然它不起作用。我也试过closest(),结果也是一样。
请问如何正确获取元素?
你应该把你的脚本写成
$('a.btn').click(function(e) {
var GotIt = $(this).closest('li').attr('id');
});
Run Code Online (Sandbox Code Playgroud)
因为“li”是你的“a”元素的直接父元素,所以你也可以使用像
$('a.btn').click(function(e) {
var GotIt = $(this).parent().attr('id');
});
Run Code Online (Sandbox Code Playgroud)
注意力!
\n\n尽管给出的答案在这种(您的)情况下有效,但它们是错误的 - 关于这个问题:
\n\n“与[任何]最亲近的父母”
\n\n正确的是
\n\n$element.parent().closest([what ever])\nRun Code Online (Sandbox Code Playgroud)\n\nclosest()包括元素本身,只要它不是 [whatever],脚本也可以正常工作,但是 \xe2\x80\xa6
这是许多脚本中的一个休眠错误,在开发后期的 DOM 设计更改之后就会出现。
\n\n文档说closest():
\n\n\n对于集合中的每个元素,通过测试元素本身并向上遍历其在 DOM 树中的祖先,获取与选择器匹配的第一个元素。
\n
(我粗体)
\n