无法禁用选择标记

时间:2014-06-12 12:38:43

标签: jquery html checkbox

在列表中有一个li,我有复选框(主复选框)和另一个ul,ul包含复选框列表(子复选框)和select标签(子选择)。我希望当我取消选中主要检查时,所有子复选框都应该取消选中,并且选择标签应该被禁用&重启 。 我取消选中子复选框的第一部分工作正常,但无法禁用和休息选择框。 这是我的jquery

$('.mainCb').on('change', function () {   
        if ($(this).is(':checked')) {
            $(this).parent().find('.subUl').show();
        } else {
            $(this).parent().find('.subUl').hide();
            $(this).parent().find('.subUl input:checkbox').prop('checked', false);
            $(this).parent().find('.subUl input:select').attr('disabled', true); // for disabling select but not able to disable select
        }
    });

My full code Demo here

3 个答案:

答案 0 :(得分:2)

使用此,

$(this).parent().find('.subUl select').prop('disabled', true); 
  • input:select是一个错误的选择器。

  • .选择器中缺少
  • subUl - $(this).parent().find('subUl select')

  • var parent = $(this).parent();使用此(缓存)而不是每次都调用它。

Working Demo

$('.mainCb').on('change', function () {  
    var parent = $(this).parent();
    if ($(this).is(':checked')) {
        parent.find('.subUl').show();
    } else {
        parent.find('.subUl').hide();
        parent.find('.subUl input:checkbox').prop('checked', false);
        parent.find('.subUl select').prop('disabled', true); // for disabling select but not able to disable select
    }
});

答案 1 :(得分:0)

您在最后一条语句中的css选择器中缺少'。'。同时将'attr'改为'prop'。

$('.mainCb').on('change', function () {   
        if ($(this).is(':checked')) {
            $(this).parent().find('.subUl').show();
        } else {
            $(this).parent().find('.subUl').hide();
            $(this).parent().find('.subUl input:checkbox').prop('checked', false);
            $(this).parent().find('.subUl select').prop('disabled', true); // for disabling select but not able to disable select
        }
    });

答案 2 :(得分:0)

最后声明应该是,

 $(this).parent().find('.subUl input:select').attr('disabled', true);