jQuery - 是否有比“parent().parent().parent()”更好的语法?
我正在做一些非常基本的 jQuery 东西,真正开始,并且我经常通过做一些事情来导航 dom,就像
$(this).parent().parent().addClass('hello');
我只是想知道是否有更好的方法来做到这一点?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
您可以使用
parents
,它依次返回所有祖先元素。如果想在特定级别停止遍历,可以使用eq
进行过滤由此产生的集合。例如,要获取祖父母:如果您想向上遍历树并且不在特定级别停止,而是在特定选择器匹配处停止,请使用
最接近
,例如:You can use
parents
, which returns all ancestor elements in turn. If you want to stop traversing at a particular level, useeq
to filter the resulting collection. For example, to get the grandparent:If you want to go upwards through the tree and stop not at a particular level, but at a particular selector match, use
closest
instead, e.g.:假设您有以下 HTML:
您可以只使用
.parents()
获取div
元素:只需将
"strong"
替换为this
,您就可以使用选择器来查找特定的父元素。Say you have the following HTML:
You could just use
.parents()
to get thediv
element:Simply replace
"strong"
withthis
and you can use a selector to find a specific parent element.您可以使用
closest()
方法,该方法返回第一个匹配的元素祖先链中给定的选择器。You can use the
closest()
method, which returns the first element that matches the given selector in the ancestor chain.听起来像是您的
.parents()
或.closest()
之后 - 后者是最有效的,因为一旦它匹配最接近的选择器,它就会停止在 DOM 上前进。Sounds like your after
.parents()
or.closest()
-- the latter being the most efficient, as it stops progressing up the DOM once it matches the closest selector.“我只是想知道是否有更好的方法来做到这一点?”
熟悉 jQuery 的选择和遍历方法绝对是个好主意。
然而,如果将来你发现自己被遍历淹没并发现:
......可能是时候考虑正式的 模型-查看方法。
"I was just wondering if there's a nicer way to do this?"
It's definitely a great idea to be intimately familiar with jQuery's selection and traversal methods.
However, if in the future you find yourself overwhelmed by traversal and discover:
...it might be time to consider a formal model-view approach.