【发布时间】:2011-09-13 19:29:48
【问题描述】:
我在页面上有大量复选框,每个复选框都在一个单独的单元格中,我需要检索自原始值以来更改了值的所有复选框。
我将原始值存储在一个名为“data-original-value”的属性中,该属性位于包含复选框的跨度中,当我将该属性添加到 Attributes 集合时,该跨度是由 asp.net 添加的。
void Grid_ItemDataBound(object sender, GridItemEventArgs e)
{
var checkBoxControls = e.Item.Controls.All().OfType<CheckBox>();
foreach (var checkBox in checkBoxControls)
{
checkBox.Attributes["data-original-value"] = checkBox.Checked.ToString();
}
}
输出的 html 如下所示:
<td>
<span data-original-value="True">
<input id="ctl00_MainContent_ControlLandMatrixControl_grid_ctl00_ctl04_ctl01" type="checkbox" checked="checked" name="ctl00$MainContent$ControlLandMatrixControl$grid$ctl00$ctl04$ctl01">
</span>
</td>
我正在使用以下 JQuery 代码来尝试识别所有已更改的复选框,但它似乎正在返回所有复选框,即使是那些未更改的复选框。
var checkBoxes = $(":checkbox").filter(function () { return $(this).checked != $(this).parent().attr("data-original-value"); } );
我相信我在比较中遗漏了一些东西,但我不完全确定 javascript/jquery 不是我的选择。
【问题讨论】: