Javascript 通过向后遍历DOM获取最近的元素

Javascript 通过向后遍历DOM获取最近的元素,javascript,jquery,Javascript,Jquery,我想用jQuery获得一个DOM元素,但我只想在DOM中向后看 因此,假设我有以下HTML结构: <div id="content"> <div id="first-module" class="module"> <h3>Some Module</h3> <p>Lorem ipsum... </p> <div id="some-other-content">

我想用jQuery获得一个DOM元素,但我只想在DOM中向后看

因此,假设我有以下HTML结构:

<div id="content">
    <div id="first-module" class="module">
        <h3>Some Module</h3>
        <p>Lorem ipsum... </p>

        <div id="some-other-content">
            <div id="second-module" class="module">
                <h3>Some other module</h3>
                <p>Dolor sit amet...</p>
                <button class="trigger">Trigger 1</button>
            </div>
        </div>

        <button class="trigger">Trigger 2</button>
        <div id="third-module" class="module">
            <h3>Another module</h3>
        </div>
    <div>
</div>

$('.trigger').click(function() {
    // Traverse DOM to find closest .module class
});

某模块
同侧眼线

其他模块 多洛坐在我身边

触发1 触发2 另一个模块 $('.trigger')。单击(函数(){ //遍历DOM以查找最近的.module类 });
因此,当我单击
trigger1
按钮时,我希望它找到ID为
div
第二个模块

当我点击
trigger2
时,我想让它找到ID为
first module
not
div
,因为它嵌套得比
trigger2
按钮更深

是否有用于此的jQuery函数?

尝试使用

是的,我们有:

$('.trigger').click(function() {
    // Traverse DOM to find closest .module class
    var id = $(this).closest('.module').attr('id');
    alert(id);
});

另一种访问它的方法是使用


很好,出于某种原因,我认为最接近的
是双向的。但是这是完美的。小心使用
parent()。这也意味着
parent
遍历回文档根目录,这与
最近的
不同。所以当您只需要一个元素时,
parent
可能会给您带来太多的开销。@w00我想您说的是parents(),但我使用的是parent。.parents()和.parent()方法是相似的,只是后者只在DOM树上移动一个级别。啊,你是对的,我以为
parent()
这样做了,但它是
parents()
。我的错。
$('.trigger').click(function() {
    // Traverse DOM to find closest .module class
    var id = $(this).closest('.module').attr('id');
    alert(id);
});
$('.trigger').click(function() {
   console.log($(this).parent('.module').attr('id'));
    // Traverse DOM to find closest .module class
});