2011-09-01 78 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