javascript - 为什么复选框的状态没有改变?

标签 javascript jquery ajax dom checkbox

点击复选框会向服务器发送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。但是用户界面上的复选框仍然没有被点击。 enter image description here enter image description here

如何解决这个问题?

最佳答案

.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/

相关文章:

jQuery 'POST' 授权

javascript - 无法使用 angularjs 将请求从 Controller 渲染到另一个 html

javascript - 如何使用关闭按钮从图像创建缩略图

javascript - 如何以编程方式在浏览器中跨域启用数据源?

jquery - 可排序、可放置和可拖动的容器

javascript - 循环遍历所有子元素

asp.net - 如何在 JQuery 进行 Ajax 调用期间处理服务器端异常?

javascript - 我的重力代码应该放在 p5.js 中的哪里?

javascript递归计数器

javascript - 3 秒后刷新对 Controller 的 JavaScript 和 Ajax 调用,无需在 MVC 4 中的 Razor View 中进行任何单击