<div id="jobs">
<table>
<tbody>
<tr id="test1">
<td>TEST1</td>
<td><button data-job="test1">></button></td>
</tr>
<tr id="test2">
<td>TEST2</td>
<td><button data-job="test2">></button></td>
</tr>
</tbody>
</table>
</div>
button:hover
{
opacity: 1;
filter: alpha(opacity=100); /* For IE8 and earlier */
color:red;
}
$("button").click(function () {
var animationDuration = 500;
var job = $(this).data("job");
var selectedRow = document.getElementById(job);
$("#jobs").find("tr").not(selectedRow).fadeTo(animationDuration, .3);
$(selectedRow).fadeTo(animationDuration, 1);
});
看我的JS小提琴example。
在单击任何给定按钮时,该功能应该“灰显”表中的所有行(不包括单击按钮的行)。但是,在悬停时,任何按钮都应该是完全不透明的。
显然,该类匹配,因为“>”变为红色。
那么为什么悬停的不透明度不会变为100%?
2019年rgba
更新
在回答这个问题7年后,使用rgba
语法应该没有问题。它在所有主流浏览器中都受支持,并且已经有一段时间了。
原始答案
子元素只是其父元素不透明度的100%不透明度。在这种情况下,你的按钮在100%的0.3不透明度。我不知道如何在不使用rgb(,,,)(在IE中不起作用)的情况下知道如何执行此操作的唯一方法是让TD相对定位并将按钮设置为绝对定位。
编辑:
这也可以通过使用jQuery手动完成淡化每个元素而不是淡化父元素。
<td>
或其他元素:http://jsfiddle.net/cMx49/5/我会推荐这样的东西。我重写了大量的javascript。