未通过jquery

时间:2016-04-08 18:49:40

标签: javascript jquery html

在我的.html

        <div class="col-md-9 col-sm-9 col-xs-12">
                <div class="">
                  <label>
                    <input type="checkbox" id="SMSCheckbox" class="js-switch" /> SMS
                  </label>
                </div>
                <div class="">
                  <label>
                    <input type="checkbox" id="EmailCheckBox" class="js-switch" /> Email
                  </label>
                </div>
              </div>

在我的.js

$(document).ready(initialize);

function initialize() {
    console.log("loaded JS");
    $.ajax({
        type: "GET",
        url: "./getNotificationSettings.php",
        datatype: "json",
        success: function(response) {
            var response = JSON.parse(response);
            var bySMS = response[0].receiveSMS;
            var byEmail = response[0].receiveEmail;
            if (bySMS) {
                console.log("bySMS = true");
                $('#SMSCheckbox').prop('checked', true);
            } else {
                console.log("bySMS = false");
                $('#SMSCheckbox').prop('checked', false);
            }
            if (byEmail) {
                console.log("byEmail = true");
                $('#EmailCheckBox').prop('checked', true);
            } else {
                console.log("byEmail = false");
                $('#EmailCheckBox').prop('checked', false);
            }
        },
        error: function(e) {
            console.log(e);
        }
    });
}

bySMS = true byEmail = true 我检查了我的控制台,它确实进入了if true分支,但不知何故我的复选框没有被选中。奇怪的是我在jsfiddle上测试了它并且它正在工作。

这个奇怪问题可能是什么原因?

不确定切换复选框是否重要,我不得不点击措辞。点击开关不会切换它。

enter image description here

2 个答案:

答案 0 :(得分:0)

当更改checked属性因某些原因不起作用时,我总是在复选框上使用.click(),不确定这是否是一种正确的方法。

答案 1 :(得分:0)

我创建了一个小功能来为你处理它:

$.fn.setCheckbox = function(value) {
  var checked = $(this).attr("checked") != "undefined" &&
    ($(this).attr("checked") === "checked" ||
      $(this).attr("checked") === true);
  if (checked != value) {
    $(this).click();
  }
}

Plunker:https://plnkr.co/edit/mdAzNsZnRdl2ifIT22e0?p=preview