0

下面的代码根据复选框选中状态隐藏表格行。由于它们的呈现方式,我无法定位 asp:checkbox 的 id。

CODE(表包裹在数据列表中)

<table>
  <tr>
    <td><asp:CheckBox ID="cb" CssClass="css" RunAt="Server"/></td>
  </tr>
  <tr class="row"><td></td</tr>
</table>

脚本

$("#<%= dl.ClientID %> #<%= cb.ClientID %>").change(function(){
    var hide = this.checked ? 'none' : 'table-row';
    $('.row').css('display', hide);
});

解决方案

$("#<%= dl.ClientID %> input:checkbox").change

(有效但未明确针对唯一复选框)

$("#<%= dl.ClientID %> .css").change

(不起作用,因为 asp:checkbox 类附加到一个包装的 span 标签)

$("#<%= dl.ClientID %> #<%= cb.ClientID %>").change

*(不起作用,因为 asp:checkbox id 将_0的后缀呈现为选中状态)*

答案

<asp:CheckBox ID="cb" RunAt="Server" onclick="hide();"/>

function hide(){
    $('.row').toggle()
};
4

2 回答 2

2

我知道重点始终放在不显眼的 javascript 上,但如果您找不到更好的解决方案,您始终可以选择将 onclick 属性添加到复选框。

<asp:CheckBox ID="cb" CssClass="css" RunAt="Server" onclick="callfunction(this);/>
于 2013-10-11T13:02:06.093 回答
2

尝试将 ClientIDMode 设置为静态。这会将 ClientID 设置为 ID 的值。

<asp:CheckBox ID="cb" ClientIDMode="Static" RunAt="Server" onclick="hide()" />

function hide() {
    $('#cb').toggle();
}
于 2013-10-11T13:42:08.140 回答