2012-06-26 63 views
2

这里是我的代码,我有两个复选框,并希望保持一个被禁止,直到另一个被启用之前执行的默认操作函数在默认动作之前执行,并且当我在第一个点击$('#remember').is(':checked')时返回false(旧值)而不是true。jQuery的。点击()自定义函数

回答

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方法已经过时了。您最好使用ondelegate

的jQuery的较新版本的解决办法如下:

$('body').on('change', '#remember', function(event) { 
    $('#keepIn').prop('disabled', !this.checked); 
}); 

而不是body你可以使用任何#remember父元素。

+1

只需2美分布鲁夫请使用'.on'而不是'.live' :) –

+0

谢谢,解决了它,我会尽我所能接受答案。 @Tats_innit在生活vs问题上,我尝试过,但.on方法不适用于我,请参阅此问题:http://stackoverflow.com/questions/11191966/jquery-triggerclick-not-working-with-jasmine -jquery – mornaner

+0

@Tats_innit我们不知道jQuery的版本是什么; – VisioN