为什么.closest(selector)返回多个值?

时间:2013-12-13 16:34:56

标签: javascript jquery html

这是我的HTML的一部分。 (它是用ejs编写的)

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

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

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

问题是$(".addObj").closest(".objAddDiv")会返回页面上的所有.objAddDiv。我看过the jquery documentation for .closest,它说最接近应该只返回一个元素。有一个更好的方法吗?我究竟做错了什么。 (这些不是我真正的班级名称btw)

2 个答案:

答案 0 :(得分:2)

这是因为你在一个'addObj'类的每个元素上调用该方法:

  

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

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

假设您在按钮的click事件中执行此操作,请使用此方法获取正确的元素:

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

答案 1 :(得分:0)

这是我想出的答案(对于接下来的任何人)我需要使用我传递给函数的元素:

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