2013-12-13 26 views
0

這是我的html的一部分。 (它是用ejs寫的)爲什麼.closest(選擇器)返回多個值?

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

我在這個頁面上有幾個objAddDiv div。它們內部都有相同的結構。我用.append()添加更多ejs到.objects。我很難添加到與按鈕相同的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)

+4

因爲使用了$(「addObj。」),所以它首先將所有這些元素匹配,則返回相對於每個.addObj –

+0

@ A.Wolff每個最接近.objects元素:我傳遞給函數的元素(臉掌)有沒有辦法解決這個問題? –

+0

你可以使用$(this)如果它是在點擊處理程序 –

回答

0

這裏是我需要用我想通了(對任何人下一個誰上臺)答案

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

這是因爲你在呼喚每一個元素上該方法與類「addObj」的:

對於組中的每一個元素,得到的第一個元素通過測試元素本身並遍歷DOM樹中的祖先來匹配選擇器。

所以你得到最接近objAddDiv到每個addObj元素。

假設你正在做這個按鈕的點擊事件中使用,以獲得正確的元素:

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

感謝您的幫助。我沒有提供正確的信息。以下是我的答案 –

相關問題