Javascript jQuery-有比“jQuery”更好的语法吗;父项().parent().parent();

Javascript jQuery-有比“jQuery”更好的语法吗;父项().parent().parent();,javascript,jquery,syntax,Javascript,Jquery,Syntax,我正在做一些非常基本的jQuery工作,真正开始,我经常通过做以下事情来导航dom $(this).parent().parent().addClass('hello'); 我只是想知道是否有更好的方法来实现这一点?您可以使用,它依次返回所有祖先元素。如果要在特定级别停止遍历,请使用筛选结果集合。例如,要获得祖父母: // 0 = parent, 1 = parent of parent, etc. $(this).parents().eq(1).addClass('hello'); 如果要

我正在做一些非常基本的jQuery工作,真正开始,我经常通过做以下事情来导航dom

$(this).parent().parent().addClass('hello');
我只是想知道是否有更好的方法来实现这一点?

您可以使用,它依次返回所有祖先元素。如果要在特定级别停止遍历,请使用筛选结果集合。例如,要获得祖父母:

// 0 = parent, 1 = parent of parent, etc.
$(this).parents().eq(1).addClass('hello');
如果要向上遍历树,并不是在特定级别停止,而是在特定选择器匹配处停止,请改用,例如:

$(this).closest("table").addClass('hello');
您可以使用该方法,该方法返回与祖先链中给定选择器匹配的第一个元素

$(this).closest(SELECTOR_OF_THE_PARENT).addClass('hello')

假设您拥有以下HTML:

<div>
    <span>
        <strong>Hi there</strong>
    </span>
</div>

只需将
“strong”
替换为
this
,您就可以使用选择器查找特定的父元素。

听起来像是在
.parents()
.closest()
之后,后者效率最高,因为一旦匹配了最近的选择器,它就会停止向上移动DOM

“我只是想知道是否有更好的方法可以做到这一点?”

熟悉jQuery的选择和遍历方法绝对是个好主意

但是,如果将来您发现自己被遍历所淹没,并发现:

  • 您的“数据模型”实际上包含在DOM中
  • 维护和更改这种性质的应用程序是非常痛苦的
  • <>……也许是时候考虑一个正式的.
    $("strong").parents("div").addClass("hello");