【发布时间】:2013-08-23 06:12:13
【问题描述】:
好的,假设我有一个类似的结构,如下所示:
<div comp-id='one'>
<div comp-id='two'>
<div comp-id='three'>
...
</div>
</div>
</div>
我想要做的就是对孩子应用悬停效果(在本例中是带有comp-id="three" 的那个)。
重要提示:我不想专门针对[comp-id="three"]。我想以 any 孩子为目标,不管是哪个comp-id 值。在现实世界的例子中,可能存在无限嵌套的[comp-id]ed divs。 我只需要最里面的孩子。
我想要达到的目标:
- 用户将鼠标悬停在
three上,然后只是突出显示three(不是one和two) - 用户将鼠标悬停在
two上,然后只是突出显示two(不是one- 当然也不是three)
我当前的 CSS 代码:
[comp-id]:hover {
box-shadow: inset 0 0 0 2px red;
-webkit-box-shadow: inset 0 0 0 2px red;
-moz-box-shadow: inset 0 0 0 2px red;
-o-box-shadow: inset 0 0 0 2px red;
}
但是,我当前的 CSS 突出显示了我不想要的所有内容。我可以想到一个基于 javascript 的解决方案。 CSS 呢?
警告:我不是 CSS 专家,所以这个可能真的很简单... :-)
【问题讨论】:
-
你的 div 有定义的深度吗?然后您可以通过
div div div:hover { ... }访问它们,否则您可以使用.find()选择器通过js 选择该div。 -
@DaKirsche 不,不幸的是没有预定义的深度。你能给我举个例子,说明在这种特殊情况下如何使用
.find()? -
用 jQuery 找到最里面的孩子:stackoverflow.com/questions/4188933/…(在你的情况下是
$('[comp-id]:not(:has([comp-id]))')。当嵌套深度没有预先确定时,我认为纯 CSS 是不可能的。 -
现在它看起来像 stackoverflow.com/questions/10364511/… 的副本
-
@TecHunter 我已经设法回答了……我自己……哈哈。非常感谢,无论如何! :-)
标签: javascript jquery html css