0

我正在尝试检查具有“监视器”类的多个复选框是否已更改。

这是我的jsfiddle 示例和下面的代码:

var serviceTracker = {};
$('.add-remove-new').live('click', function() {
  if ($(this).val() == 'Remove') {
    $(this).parent().parent().remove();
    if ($('.service', $(this).parent().parent()).hasClass('existing')) {
      serviceTracker[$('.service', $(this).parent().parent()).text()] = {};
      serviceTracker[$('.service', $(this).parent().parent()).text()].action = 'Delete';
      serviceTracker[$('.service', $(this).parent().parent()).text()].active = 0;
    }
    else {
      serviceTracker[$('.service', $(this).parent().parent()).val()] = {};
      serviceTracker[$('.service', $(this).parent().parent()).val()].action = 'Delete';
      serviceTracker[$('.service', $(this).parent().parent()).val()].active = 0;
    }
  }
  else if ($(this).val() == 'Add') {
    $('tr.newService:last').clone().insertAfter($('tr.newService:last'));
    $(this).val('Remove');
    serviceTracker[$('.service', $(this).parent().parent()).val()] = {};
    serviceTracker[$('.service', $(this).parent().parent()).val()].action = 'Add';
    serviceTracker[$('.service', $(this).parent().parent()).val()].active = 1;
  }
  console.log(serviceTracker);
});
$('.monitor').live('change', function() {
  if (typeof(serviceTracker[$('.service', $(this).parent().parent()).val()]) === 'undefined' && typeof(serviceTracker[$('.service', $(this).parent().parent()).text()]) === 'undefined') {
    if (typeof(serviceTracker[$('.service', $(this).parent().parent()).val()]) === 'undefined') serviceTracker[$('.service', $(this).parent().parent()).val()] = {};
    else serviceTracker[$('.service', $(this).parent().parent()).text()] = {};
  }
  if ($(this).is(':checked')) {
    if (serviceTracker[$('.service', $(this).parent().parent()).val()] in serviceTracker) {
      serviceTracker[$('.service', $(this).parent().parent()).val()].active = 1;
    }
    else if (serviceTracker[$('.service', $(this).parent().parent()).text()] in serviceTracker) {
      serviceTracker[$('.service', $(this).parent().parent()).text()].active = 1;
    }
  }
  else {
    if (serviceTracker[$('.service', $(this).parent().parent()).val()] in serviceTracker) {
      serviceTracker[$('.service', $(this).parent().parent()).val()].active = 0;
    }
    else if (serviceTracker[$('.service', $(this).parent().parent()).text()] in serviceTracker) {
      serviceTracker[$('.service', $(this).parent().parent()).text()].active = 0;
    }
  }
});

我没有收到任何错误,但什么也没发生。预期的结果是,具有服务名称的对象要么是在填充活动变量的情况下创建的,要么如果它已经存在,则只需更改活动变量。

(注:我使用的是jquery 1.6.1版本,所以无法使用on())

4

0 回答 0