2011-09-01 81 views
2

我有這個html;jQuery select parent

<div class="AttachmentContainer"> 
    <div class="display-label">Attachment name</div> 
    <div class="display-field"> 
    <input type="checkbox" id="chkAttachment" class="Attachment" /> 
    <%= thisAttachment.filename%>         
    </div> 
</div> 

並點擊複選框我有這個jQuery代碼;

$(this).parent(".AttachmentContainer").hide(); 

但它不起作用。如果我警告了html()而不是hide(),它是空的。

如果我改變它;

$(this).parent().parent().hide(); 

它工作正常。我認爲把一個選擇器放在父項上會一直向上移動,直到它找到具有該類名的父項。我不想使用parent().parent()那麼還有什麼呢?

編輯

.parents("....也不起作用。

+0

你有'AttachmentContainer'類多個控件?如果沒有,你可以使用'$(「。AttachmentContainer」)' – Tsar

+0

爲什麼你不想使用parent()。parent()?你想影響你所在的元素的父親(parent),parent()對我來說似乎是完美的。 – Patrick

+0

@tsar是的,我有多個 – griegs

回答

9

可以使用closest方法來達致這:

$(this).closest('.AttachmentContainer').hide(); 
+0

+1,但我想我喜歡父母直到litte更好,它的工作原理。你的順便說一句,謝謝。 – griegs

+0

請記住,parentsUntil包含「最多但不包含選擇器匹配的元素」。 –

+0

是。你是對的。謝謝。 – griegs