Joh*_*ith 219 html javascript jquery dom parent
我有一个<div>其他的<div>s,每个都在不同的嵌套级别.<div>我不是给每个孩子一个标识符,而是给根<div>标识符.这是一个例子:
<div class="a" id="a5">
<div class="b">
<div class="c">
<a class="d">
</a>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
如果我在jQuery中编写一个函数来响应类d,我想找到它的父类的类a,我该怎么做呢?
我不能简单地做$('.a').attr('id');,因为有多个类a.我可以找到它的父母的父母的父亲的ID,但这似乎设计很差,速度慢,而且不是非常多态(我必须编写不同的代码来找到类的ID c).
SLa*_*aks 443
假设this是.d,你可以写
$(this).closest('.a');
Run Code Online (Sandbox Code Playgroud)
该closest方法返回与选择器匹配的元素的最内层父级.
Dre*_*kes 22
将选择器传递给jQuery 父函数:
d.parents('.a').attr('id')
Run Code Online (Sandbox Code Playgroud)
编辑嗯,如果你只想要最接近你的选择器的祖先,那么Slaks的答案是优越的.
Huy*_*Huy 10
<div id="412412412" class="input-group date">
<div class="input-group-prepend">
<button class="btn btn-danger" type="button">Button Click</button>
<input type="text" class="form-control" value="">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我使用以下代码:
$(this).parent().closest('.date').attr('id')
Run Code Online (Sandbox Code Playgroud)
希望这对某人有帮助。
您可以使用parents()来获取具有给定选择器的所有父母。
描述:获取当前匹配元素集中每个元素的祖先,可以选择使用选择器进行过滤。
但是parent()只会获得元素的第一个父元素。
描述:获取当前匹配元素集中每个元素的父元素,可以选择通过选择器进行过滤。
而且有.parentsUntil() ,我认为将是最好的。
描述:获取当前匹配元素集中每个元素的祖先,直到但不包括选择器匹配的元素。
摘自上面@Resord 的评论。这个对我有用,并且更倾向于这个问题。
$(this).parent().closest('.a');
Run Code Online (Sandbox Code Playgroud)
谢谢