[英]How to wrap a row of the table when a checkbox in it is selected?
我正在处理一个表,当单击该特定行中的复选框时,必须在其中选择一行。 仅应选中已选中复选框的行,或者可以说用红色突出显示该行。 我一直在尝试在JavaScript / jquery中使用包装函数,这在我的表中未显示任何效果。 我添加了我正在工作的代码部分。 我该怎么做?
Response.Write "<table><tr><td class='cell1'>Project</td><td class='cell1'>Project ID</td><td class='cell1'>Finish</td></tr>"
WHILE NOT rs.eof
Response.Write "<tr><td class='celld'>"& rs(projectname") &".</td>"
Response.Write "<td class='celld'>"& rs("productID") &"</td>"
Response.Write"<td class='celld'><input var='"& rs("productID") &"' type='checkbox' id='finish' checked></td></tr>"
rs.MoveNext
WEND
<script>
$("#finish").onclick(function(){
$(".celld").wrap(" <div style='color:red'/>");
});
</script>
当复选框内部更改状态时,可以在parent(ancestor) tr
上切换.highlight
类:
$(document).ready(function(){
$("table input[type='checkbox']").on('change', function(){
$(this).closest('tr').toggleClass("highlight");
});
});
CSS:
.highlight{
background-color:red;
}
检查以下代码段
$(document).ready(function() { $("table input[type='checkbox']").on('change', function() { $(this).closest('tr').toggleClass("highlight"); }); });
table { border: 2px solid blue; } table td { border: 1px solid green; } .highlight { background-color: red; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <table> <tr> <td>Col 1</td> <td>Col 2</td> <td>Col 3</td> <td>Col 4</td> </tr> <tr> <td>Data 1</td> <td>Data 2</td> <td>Data 3</td> <td>Select row <input type="checkbox"> </td> </tr> <tr> <td>Data 1</td> <td>Data 2</td> <td>Data 3</td> <td>Select row <input type="checkbox"> </td> </tr> <tr> <td>Data 1</td> <td>Data 2</td> <td>Data 3</td> <td>Select row <input type="checkbox"> </td> </tr> </table>
我看到您正在使用jQuery,因此实际上非常简单。 将一个on change侦听器附加到该复选框,然后每当触发更改时,选择它的父级tr
元素并对其应用一个类。
$('.checkbox').on('change', function() {
$(this).parents('tr').addClass('hightlight');
});
请注意,您还需要在样式中定义此类,以使其实际在视觉上更改行。
您的代码有几个问题。 首先,在循环内部,您将创建具有相同id
属性的多个元素,这是无效的。 您应该使用通用类来选择元素。 另外input
没有var
属性,我想这应该是value
。
从那里,您可以将单个事件处理程序附加到所有遍历DOM的元素上,以找到相关的tr
。 请注意,添加click事件处理程序的jQuery方法是click()
,而不是onclick()
。 使用复选框,您还应该连接到change
事件,以适应那些通过键盘浏览的情况。 您还可以使用toggleClass()
基于复选框的checked
属性的状态来设置类。
最后,您不能将td
包装在div
因为这也是无效的。 最好将简单的类添加到tr
,以设置所需的CSS规则。 像这样:
<table cellpadding="2" width="100%" cellspacing="0" border="1">
<tr>
<td class="tdcell1">Project</td>
<td class="tdcell1">Project ID</td>
<td class="tdcell1">Finish</td>
</tr>
<tr>
<td class="tdcelld">Project Name #1.</td>
<td class="tdcelld">ProductId #1</td>
<td class="tdcelld">
<input value="ProductId1" type="checkbox" class="finish">
</td>
</tr>
<tr>
<td class="tdcelld">Project Name #2.</td>
<td class="tdcelld">ProductId #2</td>
<td class="tdcelld">
<input value="ProductId2" type="checkbox" class="finish">
</td>
</tr>
</table>
$(".finish").click(function(){
$(this).closest('tr').toggleClass('red', this.checked);
});
.red { color: red; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.