这是我的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)
答案 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)