<div>
<!-- h1 with a span -->
<h1>
<span>...</span>
</h1>
<table>
...
<!-- h1 without a span -->
<h1>...</h1>
<table>
...
如何选择围绕<h1>
的{{1}}后面的表格?我尝试了<span>
,以便该表使用相邻的运算符。但是,它不起作用。这可能是因为表格显示为与h1 span + table
相邻而不是<span>
。任何提示?
答案 0 :(得分:1)
由于您对JavaScript解决方案持开放态度,这就是我所做的。
var elms = document.getElementsByTagName('h1');
for(var i = 0; i < elms.length; i++) {
var elm = elms[i];
if(!(elm.getElementsByTagName('span').length > 0))
elm.className = "select-next-table";
}
&#13;
.select-next-table + table {
border: 1px solid red;
}
table {
width: 100px;
height: 100px;
border: 1px solid #000;
}
&#13;
<h1><span>Don't select the next table</span></h1>
<table></table>
<h1>Select the next table</h1>
<table></table>
&#13;
这里做的是获取所有h1
标记并循环它们。稍后,我尝试在span
代码中搜索h1
,如果我没有获得任何内容,那么我会将class
附加到h1
元素,之后,我使用.select-next-table + table
选择与h1
标记相邻的表格,h1
没有span
个标记。
您绝对可以选择在h1
使用
h1 + table
但您无法检查h1
是否包含span
元素,因为一旦进入h1
标记,就无法再次选择父级。因此,对于这些事情,您可能必须使用JavaScript。
答案 1 :(得分:0)
您的代码正在检查一个表,该表是h1中span元素之后的第一个兄弟。我不认为你可以根据跨度选择一个表。
但是你可以在h1中添加一个类来做
h1.class + table
或者也许使用nth-child选择器h1:nth-child(1) + table
。
答案 2 :(得分:0)
h1 span + table
选择在<span>
元素中<h1>
之后立即放置的表格。但是您想要选择放在<h1>
之后的表格,因此您需要使用h1 + table
选择器。
仅当<h1>
包含<span>
标记时,:has()
伪类才可以帮助您应用规则:
h1:has(span) + table
问题是任何浏览器仍然不支持选择器级别4。但是可以通过jQuery为指定的表设置特殊的class
属性值。
$("h1:has(span)+table").addClass("special");
&#13;
.special {
color: red;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>
<span>H1 with <span></span>
</h1>
<table>
<tr><td>special style</td></tr>
</table>
<h1>H1 without <span></h1>
<table>
<tr><td>common style</td></tr>
</table>
&#13;