Javascript 通过向后遍历DOM获取最近的元素
我想用jQuery获得一个DOM元素,但我只想在DOM中向后看 因此,假设我有以下HTML结构: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">
<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
});