0

在我的用户控件中,有一个 gridview。我想使用标题复选框选择/取消选择gridview中的所有复选框。所以我使用jQuery实现它。

function SelectAllCheckboxes(chk) {
    $('#<%=gridView.ClientID %> >tbody >tr >td >input:checkbox').attr('checked', chk.checked);
}

在我的gridview的headertemplate中,我放了这个

<asp:CheckBox ID="chkHeader" runat="server"  OnClick="javascript:SelectAllCheckboxes(this);"/>

它运作良好。但是当另一个开发人员将我的用户控件放入 aspx两次时,它就无法正常工作。

每当我检查第一个或第二个 Gridview 的标题复选框时,只有第二个GridViews 的复选框被选中或取消选中。

即使我检查了第一个 Gridview 的标题复选框,它也从不检查第一个 GridView 的复选框。

我需要什么样的修改?

提前致谢。

4

1 回答 1

3

你可以使用closest()方法:

function SelectAllCheckboxes(chk) {
    $(chk).closest('table >tbody >tr >td >input:checkbox').attr('checked', chk.checked);
}

来自 jquery 的文档:“获取与选择器匹配的第一个元素,从当前元素开始并向上遍历 DOM 树。”

编辑:我不太确定它是否会那样工作。如果没有,您可以尝试:

function SelectAllCheckboxes(chk) {
    $(chk).closest('table').find('>tbody >tr >td >input:checkbox').attr('checked', chk.checked);
}

希望能帮助到你。

于 2012-09-24T04:03:58.717 回答