3

在我的情况下,我有两个 html 元素被另一个元素(祖父)覆盖,就像这样

 <div class="tabs">
  <ul class="header">
    <li> <a> </a> </li>
  </ul>
  <div class="content show"> </div>
  </div>

tabs是一个祖父母,header并且show是它的孩子,我的问题是单击<a>哪个是header需要删除其班级show兄弟姐妹的孙子header

我用closest()它没有帮助在这里我尝试过的演示

$(this).closest('content').removeClass('show');

帮帮我

编辑:(jsfiddle中的标记)

<div class="tabs">
    <ul class="tabheader">
        <li class="active"><a href="#fragment-1"><span>FAQs</span></a>
        </li>
        <li><a href="#fragment-2"><span>Credit bundle</span></a>
        </li>
        <li><a href="#fragment-3"><span>Delivery & turnaround times</span></a>
        </li>
        <li><a href="#fragment-4"><span>Testimonials</span></a>
        </li>
    </ul>
    <div class="clearfix"></div>
    <div id="fragment-1" class="tabed_contents show">adasdasd</div>
    <div id="fragment-2" class="tabed_contents">adasdasd</div>
    <div id="fragment-3" class="tabed_contents">adasdasd</div>
    <div id="fragment-4" class="tabed_contents">adasdasd</div>
</div>
4

2 回答 2

3

首先,您需要.在类选择器中使用前缀。但是,您所拥有的是寻找父.content元素,但它是父元素的兄弟,因此不会被找到。

尝试这个:

$(this).closest('.tabs').find('.tabed_contents').removeClass('show');

或者,你可以去.header寻找兄弟姐妹.content

$(this).closest('.header').siblings('.tabed_contents').removeClass('show');

为了不隐藏所有.tabed_contents使用这个:

$(this).closest('.tabs').find('.tabed_contents').hide();

小提琴

于 2013-10-09T10:12:07.860 回答
0

尝试这个 :

$( this ).parent().parent().siblings(".content").removeClass('show');
于 2013-10-09T10:17:27.910 回答