jQuery:选择祖父母的h1标签

时间:2015-06-26 21:33:18

标签: javascript jquery html css

我在一个非常严格的框架(NetSuite)中工作,并且有一个我可以直接控制的小部分,下面是h3和p文本。结构类似于:

<div class="grandparent">
    <h1>Title Text</h1>
    <div class="otherstuff">Some text</div>
    <div class="parent">
        <h3>Text I have control over</h3>
        <p>More text I have control over</p>
    </div>
</div>

我想隐藏此页面的标题文字和'.otherstuff'的内容。有多个页面与此类似,所以我正在寻找一种干净的方式来完成它。

我试过给h3标签一个类,然后是以下内容:

$('h3.myclass').parent().closest('h1').css('display','none);

及其变化,但没有任何运气。我查看了.parentUntil()函数,但遇到了同样的问题。我抓住祖先元素没有问题,但在试图抓住那些祖先的元素时遇到了麻烦。

任何人都可以帮助我吗?

编辑:感谢大家回答我的问题所花费的时间和精力。我真的很感激!

6 个答案:

答案 0 :(得分:9)

  1. 使用closest()遍历祖父母
  2. 使用find()选择所需的元素
  3. 您可以使用hide()代替css('display', 'none'),因为它们是等效的
  4. &#13;
    &#13;
    var grandparent = $('.myclass').closest('.grandparent');
    grandparent.find('h1, .otherstuff').hide();
    &#13;
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <div class="grandparent">
      <h1>Title Text</h1>
      <div class="otherstuff">Some text</div>
      <div class="parent">
        <h3 class="myclass">Text I have control over</h3>
        <p>More text I have control over</p>
      </div>
    </div>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:2)

我可以想到两个选择器,可能会假设您重新放入.myclass

$('.myclass').closest('.grandparent').find('h1').css('display','none');

$('.myclass').parent().siblings('h1').css('display','none');

答案 2 :(得分:2)

  

可以直接控制哪个是h3

尝试使用.parent().siblings()

$("h3").parent().siblings().hide(); // `$(".parent").siblings().hide();` ?
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">

</script>
<div class="grandparent">
    <h1>Title Text</h1>
    <div class="otherstuff">Some text</div>
    <div class="parent">
        <h3>Text I have control over</h3>
        <p>More text I have control over</p>
    </div>
</div>

答案 3 :(得分:0)

您可以使用:

$('.myclass').closest('.grandparent').find('>h1,>.otherstuff').hide();

>用于直接后代元素。

答案 4 :(得分:0)

nearest()选择祖先,你想要的是兄弟姐妹()。

所以:

$('.your_h3_class').parent().siblings('h1')

将返回父div的h1兄弟数组,在您的情况下,该数组的第一项是您的h1。

你可以迭代这些并隐藏它们(万一有多个)

答案 5 :(得分:-1)

如果标题总是紧跟在div之前,那么&#34; otherstuff&#34;类,然后你可以使用这个:

$('.otherstuff').prev('h1').css('display', 'none');

此处的文档:https://api.jquery.com/prev/