2014-02-17 116 views
3

我嘗試在這裏檢測option[name='admin']的選擇,如果它是,那麼我檢查提到的複選框,如果沒有,我不選中它。jQuery代碼的優化

是否有更好的代碼優化?

$("select option[name='admin']:selected").select(function() { 
    $(".gestionSupervision").prop('checked', true); 
}); 

$("select option[name='sei']:selected").select(function() { 
    $(".gestionSupervision").prop('checked', false); 
}); 

HTML:

<select name="role" id="role" class="form-control" disabled> 
    <option value="admin">Administrateur</option> 
    <option value="sei">Superviseur</option> 
</select> 

非常感謝!

回答

1

您可以使用下面的代碼更容易理解:

$('select#role').on('change', function (e) { 
    var optionSelected = $("option:selected", this), 
     selectedVal = this.value; 

    if(selectedVal == "admin") { 
     $(".gestionSupervision").prop('checked', true); 
    } else { 
     $(".gestionSupervision").prop('checked', false); 
    } 
}).change(); 

Fiddle Demo

或者你可以縮短上面的代碼:

$('select#role').on('change', function (e) { 
    var selectedVal = $(this).find('option:selected').val(); 
    $(".gestionSupervision").prop('checked', selectedVal == "admin"); 
}).change(); 

Fiddle Demo

+1

非常感謝您的回覆,我已經贊成! –

0

大概是這樣的:

$("select option:selected").select(function() { 
    status = (this.val() == 'sei') 
    $(".gestionSupervision").prop('checked', status); 
}); 

無需重複整個事情,只更改名稱/布爾值。

+1

非常感謝你對你的迴應,你的代碼都無法正常工作。 –

1

我認爲你需要使用更改事件

$("#role").change(function() { 
    $(".gestionSupervision").prop('checked', $(this).find('option[value="admin"]').is(':selected')); 
}).change(); 

演示:Fiddle

+1

非常感謝您的回覆,我已經贊成! –