1

我有一个包含一些变量的脚本,我想根据是否选中复选框来更新这些变量之一。默认情况下未选中该复选框。我现在拥有的是这样的:

var checked = $('#accept').attr('checked');
if (checked) {
    permission = "Y";
} else {
    permission = "N";
};
var track = {
    version: 123,
    id: 123456789,
    order: {
        sv1: 'Y',
        sv2: 'N',
        sv3: 'Name',
        sv4: permission,
        orderid: '123xyz'
    }
};
console.log(track);

我想根据复选框的单击事件更新变量“权限”的内容:

$('#accept').click(function () {
      if (checked) {
      permission = "Y";
      } else {
      permission = "N";
      };
});

在这里拉小提琴

但这怎么可能?

4

6 回答 6

1

您可以通过单击执行此操作:

$('#accept').click(function () {
    var permission = this.checked ? "Y" : "N";
    console.log(permission);
});

小提琴演示

于 2013-07-09T08:12:53.070 回答
1

为了更新您的对象键 (sv4) 值:

http://jsfiddle.net/k6S3m/6/

如果您已经将 存储permission到您的 Objecttrack中,那么请不要犹豫,使用您的对象并直接操作它并使用=.

var permission = $('#accept').is(':checked') ? "Y" : "N";

var track = {
    version: 123,
    id: 123456789,
    order: {
        sv1: 'Y',
        sv2: 'N',
        sv3: 'Name',
        sv4: permission,
        orderid: '123xyz'
    }
};
console.log( track.order.sv4 );                       // returns: N

$('#accept').change(function () {
    track.order.sv4 = this.checked ? "Y" : "N";
    console.log( track.order.sv4 );                   // returns: Y
});

永远不要忘记通过设置在内部定义变量var

使用返回布尔值(真/假)$('#accept').is(':checked')的jQuery.is()方法,而不是我们使用Ternary Operator ( ? : )to "Y"/"N"

于 2013-07-09T08:28:18.750 回答
0

你不能这样做:

$('#accept').click(function () {
      if ($(this).prop('checked')) {
          permission = "Y";
      } else {
          permission = "N";
      };
});

这样,如果单击复选框,您将更改变量。

于 2013-07-09T08:12:44.957 回答
0

问题是您已正确初始化checked,但显然它不会在单击复选框时更新。您将不得不再次检查。所以试试:

 $('#accept').click(function () {
     if ($('#accept').attr('checked')) {
        permission = "Y";
      } else {
         permission = "N";
      };
  alert(permission);
 });
于 2013-07-09T08:15:25.137 回答
0

看看这个:应该是 $('#accept').is(':checked') 而不是 if(checked)

[小提琴][1]

[1]: http://jsfiddle.net/k6S3m/4/
于 2013-07-09T08:16:08.107 回答
0

试试这个

$('#accept').on('change', function () { track.order.s4 = this.checked ? 'Y' : 'N'; });
于 2013-07-09T08:32:35.083 回答