【问题标题】:Check box to select all check boxes in a gridview复选框以选中网格视图中的所有复选框
【发布时间】:2014-01-29 20:28:33
【问题描述】:

我编写了这个简单的代码来检查gridview 中的所有checkboxes

function chkFun() {
        if ($("#chkSelectAll").is(':checked')) {
            $("#grdSearchResults tr").each(function () {
                debugger
                var checkBox = $(this).find("input[id*='chkSelected']");
                $(checkBox).attr("checked", true);
            });
        }
        else {
            $("#grdSearchResults tr").each(function () {
                debugger
                var checkBox = $(this).find("input[id*='chkSelected']");
                $(checkBox).attr("checked", false);
            });
        }
    }

chkFun 将调用chkAll checkbox OnClicking.. 它在第一次[选择和取消选择] 时工作正常.. 之后它根本不工作而且我不知道为什么。

我尝试调试它,正如你在代码中看到的那样,它无处不在.. 但是这条线 $(checkBox).attr("checked", false); 在第一次之后没有做任何事情

【问题讨论】:

  • 您能提供您的标记吗?只靠你的 JS 代码有点难。
  • 尝试使用class而不是id

标签: jquery asp.net gridview checkbox


【解决方案1】:

使用.prop() 而不是attr()

function chkFun() {
    if ($("#chkSelectAll").is(':checked')) {
        $("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', true);
    } else {
        $("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', false);
    }
}

另外你不需要使用.each(),你可以一行选择所有

或者您可以将函数绑定到 chkSelectAll 并使用 cmets 中推荐的代码 Satpal 以使代码更短

$('#chkSelectAll').on('change', function () {
    $("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', this.checked)
});

【讨论】:

  • 好的,.prop() 工作正常.. 你能解释一下为什么.attr() 在这里不是一个好的功能吗??
  • .attr 不适用于布尔值@Mahmoud 这里有一篇很好的帖子解释了 prop 与 attr stackoverflow.com/a/5876747/1696560
  • 如果可以删除块并且可以使用$("#grdSearchResults tr").find("input[id*='chkSelected']").prop('checked', this.checked)改进代码
  • @Satpal 我刚刚注意到,this.checked 不起作用,因为this 没有作用于函数,所以 this.checked 不起作用:/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多