这是我的代码,我有两个复选框,希望保持一个禁用,直到启用另一个:
$(function(){
$('#remember').live('click', function(event){
if($('#remember').is(':checked')){
$('#keepIn').removeAttr('disabled');
}
else
$('#keepIn').attr('disabled', 'disabled');
});
});
问题是此函数在默认操作之前执行,当我单击第一个$('#remember').is(':checked')
时,返回false(旧值)而不是true。
答案 0 :(得分:4)
您可以改为使用change
事件:
$('#remember').live('change', function(event) {
if (this.checked) {
$('#keepIn').removeAttr('disabled');
} else {
$('#keepIn').attr('disabled', 'disabled');
}
});
DEMO: http://jsfiddle.net/jP3NY/
NB: live
方法已弃用。您最好使用on
或delegate
。
对于较新版本的jQuery,解决方案可能如下:
$('body').on('change', '#remember', function(event) {
$('#keepIn').prop('disabled', !this.checked);
});
您可以使用body
的任何父元素代替#remember
。