我正在尝试检查具有“监视器”类的多个复选框是否已更改。
这是我的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())