Why.closest(选择器)返回多个值

Why .closest(selector) returns more than one value?

本文关键字:返回 closest 选择器 Why      更新时间:2023-09-26

这是我的html的一部分。(使用ejs编写)

<div class="objAddDiv">
    <tr><td><button class="addObj">Do this action</button></td></tr>
    <table><div class="objects"></div></table>
</div>

我在这个页面上有几个objAddDivdiv。每个都有相同的内部结构。我使用.append().objects添加更多的ej。我很难只添加与按钮位于同一div内的.objectsdiv。我试着做以下

".addObj click": function(el, element){
    $(".addObj").closest(".objAddDiv").find(".objects").append(//my ejs utility here)
}

问题是$(".addObj").closest(".objAddDiv")返回页面上的所有.objAddDiv。我看过.closest的jquery文档,它说最接近应该只返回一个元素。有更好的方法吗?我做错了什么。(顺便说一句,这些不是我真正的类名)

这是因为您在每个具有类"addObj"的元素上调用该方法:

对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先,获得与选择器匹配的第一个元素。

因此,您可以得到与每个addObj元素最接近的objAddDiv

假设你在按钮的点击事件中这样做,使用这个来获得正确的元素:

$(this).closest(".objAddDiv").find(".objects").append(//my ejs utility here)

以下是我找到的答案(对于下一个来的人),我需要使用我传递到函数中的元素:

el.closest(".objAddDiv").find(".objects").append(//ejs append stuff)