点击复选框会向服务器发送ajax请求,下面是我如何处理切换:
toggleDefault: function(e) {
e.preventDefault();
var url = $(e.target).data('target');
var value = $(e.target).attr('checked') ? 0 : 1;
$.post(url, {value: value})
.done(function() {
value ? $(e.target).attr('checked', true) : $(e.target).removeAttr('checked');
})
.error(function() {
alert('There is an error processing request, please try again.');
})
}
禁用事件确实工作正常。但是当涉及到启用事件时,我可以看到 $(e.target).attr('checked', true)
操作更改了复选框 dom。但是用户界面上的复选框仍然没有被点击。
如何解决这个问题?
最佳答案
.done(function() {
value ? $(e.target).prop('checked', true) : $(e.target).prop('checked', false);
})
还更改了这一行 var value = $(e.target).attr('checked') ? 0 : 1;
到 var value = $(e.target).is(':checked') ? 0 : 1;
。
希望这能奏效!
关于javascript - 为什么复选框的状态没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33472780/