获取表中要更改的行的背景以进行单击
Get the background of the row in a table to change for a click?
当用户正确单击时,如何获取表中行的背景以更改颜色?
我通过:activepseudoclass尝试了这个,但没有按我的意愿工作。例如,在移动设备触摸屏上,用户一触摸屏幕,相交的行就会改变颜色,即使它不是点击[点击是一个短的mouseDown+mouseUp组合]。
这是表格:
<table>
<tbody>
<tr>
<td align="left" style="vertical-align: top;">
<div class="GPBYFDEEB"
__gwtcellbasedwidgetimpldispatchingfocus="true"
__gwtcellbasedwidgetimpldispatchingblur="true">
<div>
<div class="GPBYFDEAB" tabindex="0" style="outline:none;" __idx="0" onclick="">
<div class="GPBYFDECB" style="outline:none;" __idx="1" onclick="">
<!-- finally this is me. -->
<div class="tableRow">
这是我的css:
.tableRow {
background-color: green;
}
.tableRow:active {
background-color: red;
}
有办法做到这一点吗?(我正在使用gwt生成上面的html,但在这里并不重要)。
准确地说,我希望在点击事件后,行的背景颜色变为红色。经过一段短暂的时间后,将背景恢复为其原始颜色。我基本上是想重现在iOS或android原生小部件上点击列表项的视觉效果。感谢
JavaScript使它非常直接:
var rows = document.getElementsByClassName("tableRow"); //get the rows
var n = rows.length; //get no. of rows
for(var i = 0; i < n; i ++) {
var cur = rows[i]; //get the current row;
cur.onmousedown = function() { //when this row is clicked
this.style.backgroundColor = "red"; //make its background red
};
cur.onmouseup = function() {
this.style.backgroundColor = "green";
}
}
如果你有jQuery,它甚至更简单:
$(".tableRow").mousedown(function() {
$(this).css("background-color", "red");
});
$(".tableRow").mouseup(function() {
$(this).css("background-color", "green");
});
一个使用纯JavaScript版本的小演示:小链接。(我随意改变了一下颜色!)。
在GWT中就是这样做的:将处理程序附加到CellTable或DataGrid。
myTable.addCellPreviewHandler(new Handler<myObject>() {
@Override
public void onCellPreview(CellPreviewEvent<myObject> event) {
if ("click".equals(event.getNativeEvent().getType())) {
myTable.getRowElement(event.getIndex()).getStyle().setBackgroundColor("red");
}
});
}
如果你不喜欢它的外观(背景颜色与边框颜色不同),你可以使用这个:
myTable.getRowElement(event.getIndex()).addClassName("redRow");
通过这种方式,您可以在redRow CSS类中指定更多规则,如:
.redRow {
background: red;
border: 2px solid red;
}
当您的行不需要这种颜色时,如果您喜欢以前的解决方案,只需删除此类或使用.getStyle().clearBackgroundColor()。
正如@Abody97在他的回答中所展示的那样,在点击时更改样式确实需要javascript,而且这并不困难。
我认为值得一提的是:active
伪选择器代表什么,因为您似乎很困惑。就个人而言,我认为它的名字选择得很恰当,如果它被称为:down或其他什么的,它会更清楚。因为这正是它的本质。它针对的是按钮或链接的关闭状态。
每个链接或按钮有3种状态:
-默认:不需要伪选择器。你可以称之为"上升"状态
-悬停:以:hover
伪selctor为目标。仅在使用鼠标时使用,当鼠标悬停在元素上时触发(对于现代浏览器,这是任何元素,而不仅仅是链接或按钮)
-活动:这是我之前提到的关闭状态。它是:active
伪选择器的目标。当使用鼠标时,这并不是真的有用,因为只有按住鼠标按钮才会触发它。在touchscreen上,它更有用,因为它表明用户点击正确。
我不确定表的内容是什么(当html片段变得有趣时,它就会停止),但我认为:focus
伪选择器也值得一提。当一个元素"有焦点"时,这个元素就会被触发。它仅适用于输入元素(输入、文本区域)或链接(通常仅在使用键盘导航时使用)。我相信这就是你在尝试使用:active
时所处的位置。
我在这里用:focus
设置了一个小示例:http://jsfiddle.net/6tN6B/特别是最后一个样品可能对你有用。使用js可以更容易地完成,但我非常喜欢只有在绝对必要的时候才使用js,所以非js用户在你的网站上也会获得同样的体验。
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在显示侧边栏时禁用背景,单击除侧边栏之外的任何位置都会关闭侧边栏
- 获取表中要更改的行的背景以进行单击
- 如何创建背景图像列表'URL,并使用jQuery在单击函数时应用它们
- 如何使模态的背景可以单击
- 谷歌工作表中的按钮,当单击时,会更改特定单元格的背景
- 使用 jQuery 单击链接时更改链接背景颜色
- 在按钮单击时将图像URL数据显示到弹出框中,而无需禁用背景
- 如何使用Kango框架在弹出框中单击按钮时更改网站的背景
- 通过右键单击更改完整日历中事件的背景颜色 - 不起作用
- 尝试在单击时使用Jquery更改html的背景颜色
- 单击时背景淡入
- on单击“更改背景图像”
- 使用jQuery单击时更改背景颜色
- 单击以使用 jquery 更改背景图像
- 单击时更改表格行的背景颜色
- JQuery - 单击时将背景图像替换为另一个背景图像
- 单击更改背景颜色
- 如何使用 jquery 单击输入类型按钮时更改画布背景图像
- 模糊按钮上的页面背景单击