简体   繁体   English

在另一个 div 中找到最近的 div

[英]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 closestelement 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM