2011-03-17 30 views
163

我有一個<div>,其中有許多其他<div> s,每個在不同的嵌套級別。而不是給每個孩子<div>一個標識符,我寧願給根<div>的標識符。這裏有一個例子:如何在jQuery中找到具有已知類的父級?

<div class="a" id="a5"> 
    <div class="b"> 
    <div class="c"> 
     <a class="d"> 
     </a> 
    </div> 
    </div> 
</div> 

如果我寫了jQuery的一個函數來d類迴應,我想找到其父,a類的ID,我會怎麼做呢?我不能簡單地做$('.a').attr('id');,因爲有多個類a s。我可以找到其父母的父母的ID,但似乎設計不好,速度慢,而且不是很多形(我必須編寫不同的代碼才能找到類c的ID)。

回答

334

假設this.d,你可以寫

$(this).closest('.a'); 

closest method返回你的元素,選擇相匹配的最裏面的父。

+0

http://api.jquery.com/closest/ –

+30

請注意,有一點抓住:如果你的起始元素也與查詢相匹配,你不會得到父元素,而是相同的元素。這可能是也可能不是想要的行爲。如果沒有,我推薦這個: $(this).parent()。closest('。一個'); – user766304

+1

非常有幫助。我總是使用$(this).parent()。parent()。parent(),我知道有更好的解決方案。 –

13

傳遞一個選擇了jQuery parents功能:

d.parents('.a').attr('id') 

編輯嗯,其實Slaks的回答是優越的,如果你只想要你的選擇相匹配的最近的祖先。

+1

這不是一個直接的父母。 – SLaks

+1

@Slaks,你是對的。從「父母」更新爲「父母」。 –

4

您可以使用parents()獲得所有父母與給定的選擇器。

說明:獲取每個 元件的祖先在當前組匹配 元素,任選地被一個 選擇器過濾的。

但是parent()只會得到元素的第一個父元素。

說明:獲取每個 元素的父在當前組匹配 元素,任選地被一個 選擇器過濾的。

jQuery parent() vs. parents()

而且有.parentsUntil(),我認爲將是最好的。

說明:獲取在當前組匹配 元件的每個元件 的祖先,直到但不包括由所述選擇器相匹配的 元件。

+0

他只想要一個_single_父母,所以他應該叫'最接近'。 – SLaks

+1

謝謝,爲了糾正,我會讓我的答案在這裏讓人們從我的錯誤中瞭解差異和理解。 –

相關問題