根据不同的ID禁用不同的下拉列表

时间:2015-12-15 07:43:50

标签: jquery

我想禁用或启用6个下拉列表,带有6个复选框。我以6个功能的方式完成了这个,但是只想要1个功能。能做到吗?

这是我的html的屏幕截图,下面是我的代码。enter image description here

$('#check_policy1').click(function(){
    if($('#check_policy1').is(':checked')){
        $(this).closest('.row').children('div:nth-child(3)').children('div').children('select.a').removeAttr('disabled');              
    }
    else { 
        $(this).closest('.row').children('div:nth-child(3)').children('div').children('select.a').attr('disabled', 'disabled');                                
    }
});    
$('#check_policy2').click(function(){
    if($('#check_policy2').is(':checked')){
         $(this).closest('.row').children('div:nth-child(3)').children('div').children('select.a').removeAttr('disabled');  
     }
     else {
         $(this).closest('.row').children('div:nth-child(3)').children('div').children('select.a').attr('disabled', 'disabled');              
     }
});

1 个答案:

答案 0 :(得分:1)

可以使用

Multiple Selector (“selector1, selector2, selectorN”)。您需要在事件处理程序中使用this,该处理程序引用调用事件处理程序的元素。

 $('#check_policy1, #check_policy2').change(function() {
     $(this)
         .closest('.row')
         .children('div:nth-child(3)')
         .children('div')
         .children('select.a')
         .prop('disabled', !this.checked);      

 });

或者,您可以为所有复选框分配一个公共类,然后使用类选择器。

 $('.check_policy').change(function() {
     $(this)
         .closest('.row')
         .children('div:nth-child(3)')
         .children('div')
         .children('select.a')
         .prop('disabled', !this.checked);      

 });