在 CSS 或 jquery 中选择直接兄弟?

Posted

技术标签:

【中文标题】在 CSS 或 jquery 中选择直接兄弟?【英文标题】:Select immediate sibling in CSS or jquery? 【发布时间】:2017-05-20 19:07:17 【问题描述】:

我在兜圈子,但无法为此找到精确的逻辑。我有以下代码:

<form>
 <table></table>
 <div class="1"> </div>
 <div class="2"> </div>
 <div class="3"> </div>
</form>

表格标签的依赖是通过设置来控制的,它并不总是存在的。如果存在“table”标签,我想要做的是隐藏类 1 的“div”。关于如何通过 CSS 或 Jquery 做到这一点的任何想法?

【问题讨论】:

【参考方案1】:

你可以使用+来表示直接兄弟:

table + div.one 
  display: none;
<form>
  <table></table>
  <div class="one">a</div>
  <div class="two">b</div>
  <div class="three">c</div>
</form>

【讨论】:

无需复制代码块。 Stack Snippets 始终在您的帖子中显示代码。【参考方案2】:

$('table').length &gt; 0 ? $('.class1').hide() : $('.class1').show();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
 <table></table>
 <div class="class1"> 1</div>
 <div class="class2"> 2</div>
 <div class="class3"> 3</div>
</form>
    假设只存在一个表,使用.length 检查是否存在。 您可以使用 ID 或类来更具体地检查要检查的表。 不要使用数字开始命名类

具体表:

$('table#check').length &gt; 0 ? $('.class1').hide() : $('.class1').show();//checks for table with id check if present then do hide or show 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <table id='check'></table>
  <div class="class1">1</div>
  <div class="class2">2</div>
  <div class="class3">3</div>
  <table id='check1'></table>
</form>

【讨论】:

【参考方案3】:

Working Fiddle

使用.siblings() 方法。

if ($('table').length > 0) 
  $("table").siblings().first().hide();

【讨论】:

以上是关于在 CSS 或 jquery 中选择直接兄弟?的主要内容,如果未能解决你的问题,请参考以下文章

CSS3 相邻兄弟选择器和通用选择器只能通过类来实现的么?

js,jq,css选择器

jQuery进阶

jQuery、CSS 和兄弟选择器问题

jQuery-强大的jq选择器和基本操作。

(CSS / jQuery/ XPath) 用于从姐妹/兄弟节点 (DOM) 获取内部文本的选择器