繁体   English   中英

选中表格中的复选框后,如何包装表格的行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM