【发布时间】:2016-02-02 20:26:58
【问题描述】:
我有多行,每行 3 个 div。每个 div 由两行组成;第一行显示图片,第二行显示描述。 HTML 是这样的:
<div id="row">
<div id="block1">
<div id="block1-top"><a><img></a></div>
<div id="block1-bottom">Text here</div>
</div>
<div id="block2">
<div id="block2-top"><a><img></a></div>
<div id="block2-bottom">Text here</div>
</div>
<div id="block3">
<div id="block3-top"><a><img></a></div>
<div id="block3-bottom">Text here</div>
</div>
</div>
<div id="row">
<div id="block1">
<div id="block1-top"><a><img></a></div>
<div id="block1-bottom">Text here</div>
</div>
<div id="block2">
<div id="block2-top"><a><img></a></div>
<div id="block2-bottom">Text here</div>
</div>
<div id="block3">
<div id="block3-top"><a><img></a></div>
<div id="block3-bottom">Text here</div>
</div>
</div>
一些 CSS:
#block1, #block2, #block3
{
width: 25%;
height: 150px;
display: inline-block;
vertical-align: top;
background-color: #FFFFFF;
border: 1px solid #154494;
}
#block1-bottom, #block2-bottom, #block3-bottom
{
color:#FFFFFF;
}
我希望块底部的文本颜色在父 div 悬停时更改为#FEB90D。因此,例如当悬停在 block1 上时,我希望 block1-bottom 的文本颜色更改为#FEB90D。我找到了一个为我执行此操作的脚本:
$(function() {
$('#block1').hover(function() {
$('#block1-bottom').css('color', '#FEB90D');
}, function() {
// on mouseout, reset the background colour
$('#block1-bottom').css('color', '#FFFFFF');
});
});
但是,这仅适用于第一行的第一个块。我认为这是因为第一个、第二个和第三个块的 id 具有相同的名称,并且脚本无法确定在哪个块上应用脚本。
在不更改所有 div id 的情况下,是否有人对如何解决此问题有任何想法?我总共有 11 行,所以在我看来,为每个 div 使用单独的名称并不是一个真正的选择。所以基本上,脚本需要改变悬停div的第二个孩子的颜色。
【问题讨论】:
-
id值必须是唯一的。
标签: javascript jquery html css