クラス「モニター」の複数のチェックボックスが変更されているかどうかを確認しようとしています。
これが私の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() を使用できません)