jquery单击事件以检查一个主要复选框并禁用所有其他复选框

nav*_*nav 1 jquery

即时尝试在jquery中创建一个函数,以便在单击一个主复选框时禁用一组复选框

功能是

function DisableCheckboxes(id)
{

    if($(this).is(':checked'))
    {
         $("input[name="+id+"]").each(function(){
            $(this).attr({
            'checked':false,
            'disabled':true});        
        });
    }
    else
    {
        $("input[name="+id+"]").each(function(){
            $(this).attr('disabled',false);        
        });
    }

}
Run Code Online (Sandbox Code Playgroud)

并在点击事件上调用它 -

$(document).ready(function() {

$("#chkNotMatter").click(DisableCheckboxes('chklStatus'));

});
Run Code Online (Sandbox Code Playgroud)

问题是 点击事件donot得到应用并且主复选框被检查

rab*_*mar 5

您应该将回调传递给事件处理程序,而是调用DisableCheckboxes并返回结果.你应该使用:

$(document).ready(function() {
  $("#chkNotMatter").click(function() { DisableCheckboxes.call(this, 'chklStatus'); });
});
Run Code Online (Sandbox Code Playgroud)

编辑: 如更新的代码段所示,您必须使用callon,DisableCheckboxes因为您正在引用this它,因此它正确引用复选框dom元素.

此外,您可以DisableCheckboxes按如下方式缩小,因为attr修改了选择器中的所有对象:

function DisableCheckboxes(id) {
    if ($(this).is(':checked')) {
         $("input[name="+id+"]").attr({
            'checked':false,
            'disabled':true
        });
    } else {
        $("input[name="+id+"]").attr('disabled',false);
    }
}
Run Code Online (Sandbox Code Playgroud)