我在一个非常严格的框架(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()函数,但遇到了同样的问题。我抓住祖先元素没有问题,但在试图抓住那些祖先的元素时遇到了麻烦。
任何人都可以帮助我吗?
编辑:感谢大家回答我的问题所花费的时间和精力。我真的很感激!答案 0 :(得分:9)
closest()
遍历祖父母find()
选择所需的元素hide()
代替css('display', 'none')
,因为它们是等效的
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;
答案 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');