[英]Find closest div inside another div
Sample:样本:
<div class="table_cover">
<div class="table_element">
<div class="column_expand_list">X</div>
</div>
<div class="element">YAY</div>
<div class="table_element">
<div class="column_expand_list">X</div>
</div>
<div class="element">YAY</div>
<div class="table_element">
<div class="column_expand_list">X</div>
</div>
<div class="element">YAY</div>
</div>
When i click "column_expand_list" i need to find closest "element".当我单击“column_expand_list”时,我需要找到最接近的“元素”。 I have a function, but I don't understand why it doesn't work:
我有一个函数,但我不明白为什么它不起作用:
console.log($(this).parent().parent().closest('.element'));
What am I doing wrong?我究竟做错了什么?
You could simply use one .parent
to go back .next() to get the div.element
- you are using parent twice
which takes you out of the actual parent table_cover
div您可以简单地使用一个
.parent
返回.next()以获取div.element
- 您使用了twice
parent twice
这使您脱离了实际的父table_cover
div
Using .next()
like this:像这样使用
.next()
:
$(this).parent('div').next('.element').text()
Demo:演示:
$('.column_expand_list').click(function() { console.log($(this).parent('div').next('.element').text()); })
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="table_cover"> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY 1</div> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY 2</div> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY 3</div> </div>
In your HTML there is no closest
element with the class element
.在您的 HTML 中,没有与 class
element
closest
的element
。 You can get the closest .table_element
and from this element you can then navigate to the next()
or prev()
.element
您可以获得最近的
.table_element
,然后可以从此元素导航到next()
或prev()
.element
closest() only traveres the DOM in the UP direction, that's why you can't find it from the clicked element you are on. close ()仅在 UP 方向上遍历 DOM,这就是为什么您无法从您所在的单击元素中找到它的原因。
$('.column_expand_list').on('click', function() { console.log($(this).closest('.table_element').next('.element')); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="table_cover"> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY</div> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY</div> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY</div> </div>
I guess this is just a repetition od @Cloned and @AlwaysHelping's answers, but anyway, here it is:我想这只是@Cloned 和@AlwaysHelping 的答案的重复,但无论如何,这里是:
$(".column_expand_list").click(function(){console.log($(this).closest(".table_element").prev()[0])})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="table_cover"> <div class="table_element"> <div class="column_expand_list">X this will not find a suitable "parent"</div> </div> <div class="element">YAY 1</div> <div class="table_element"> <div class="column_expand_list">X click here.</div> </div> <div class="element">YAY 2</div> <div class="table_element"> <div class="column_expand_list">X</div> </div> <div class="element">YAY</div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.