我正在尝试检查是否更改了“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())