【发布时间】:2017-05-08 16:46:39
【问题描述】:
只有一行具有 highlightRowSelected 类,并且该行的复选框被勾选 - 这是有效的
如何使其他复选框取消选择没有类 highlightRowSelected 的其他复选框,也可以勾选其他行复选框,但不应将类 highlightRowSelected 添加到该行,仅应添加行单击(不是来自复选框 col)类highlightRowSelected 到该行
您可以更改函数声明并进行纯 js 调用,而不是在 html 中指定 getdetails(row).. 此外,这些行是动态的,因此无法硬编码 id 或 html 中的内容
看看这个小提琴:https://jsfiddle.net/y7jqb5hp/13/
function getdetails(row) {
el = window.event.srcElement;
if (el.id.substr(0, 7) == 'eachRow')
el = null;
if (row.cells[0].children[0].checked == false && el != null) {
row.cells[0].children[0].checked = true;
} else if (row.cells[0].children[0].checked == false && el != null) {
row.cells[0].children[0].checked = true;
}
$("#tableID tbody tr").each(function() {
$(this).removeClass("highlightRowSelected");
});
$(row).addClass("highlightRowSelected");
}
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 100%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
.highlightRowSelected {
background-color: #e2e2e2;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="tableID">
<tr onclick="getdetails(this)">
<th>checkbox</th>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr onclick="getdetails(this)">
<td><input name="eachRow" type="checkbox" /> </td>
<td>Alfreds </td>
<td>Maria </td>
<td>Germany</td>
</tr>
<tr onclick="getdetails(this)">
<td><input name="eachRow" type="checkbox" /> </td>
<td>Centro </td>
<td>Francisco </td>
<td>Mexico</td>
</tr>
<tr onclick="getdetails(this)">
<td><input name="eachRow" type="checkbox" /> </td>
<td>Ernst </td>
<td>Roland </td>
<td>Austria</td>
</table>
【问题讨论】:
-
您的代码似乎已经在执行您需要的操作。该复选框在单击的行上被选中,并且仅突出显示最后单击的行。如果这不是您想要的,请更清楚地描述问题和您想要的行为
-
编辑了描述
-
你应该使用单选按钮而不是复选框...
-
它必须是一个 chkecbox -- 抱歉要求不能改变
标签: javascript jquery html css checkbox