.live检查复选框上的更改不起作用

时间:2013-08-09 15:13:30

标签: javascript checkbox jquery

我正在尝试检查是否更改了“monitor”类的多个复选框。

以下是我的jsfiddle example和以下代码:

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())

0 个答案:

没有答案