2009-10-22 2 views
0

У меня есть 20 переключателей вкл/выкл, которые отправляют запрос ajax, который обновляет поле в таблице. Я дублировал, когда класс присоединяется к селектору, потому что мне нужно указать, какие переключатели включены или выключены. Тем не менее, первая кнопка, на которую я нажимаю, работает, но после этого мне иногда нужно щелкнуть один раз для некоторых других кнопок, в то время как остальным требуется два клика. Вот какой код!Два класса DOM работают с одним и тем же классом javascript, запуская функцию щелчка?

прикрепление класса:

$(document).ready(function() { 
    var user = $(".profile").attr('id'); 
    $('#status').hide(); 
    $('.switch1').checkbox("on", 
     function(theId) { 
      $.post("setPerms.php", { user_id: user, val: "1", field: theId }, function(data){ 
       $("#status").text(data).fadeIn(1000); 
       $('#status').fadeOut(1000); 
      }); 
     }, 
     function(theId) { 
      $.post("setPerms.php", { user_id: user, val: "0", field: theId }, function(data){ 
       $("#status").text(data).fadeIn(1000); 
       $('#status').fadeOut(1000); 
      }); 
     }); 

    $('.switch0').checkbox("off", 
     function(theId) { 
      $.post("setPerms.php", { user_id: user, val: "1", field: theId }, function(data){ 
       $("#status").text(data).fadeIn(1000); 
       $('#status').fadeOut(1000); 
      }); 
      }, 
     function(theId) { 
      $.post("setPerms.php", { user_id: user, val: "0", field: theId }, function(data){ 
       $("#status").text(data).fadeIn(1000); 
       $('#status').fadeOut(1000); 
      }); 
     }); 
}); 

и здесь, где функциональность клики: (отдельные файлы)

// click handling 
     jQuery(this).click(function() { 
      var theId = $(this).attr('id'); 
      if(state == 'on') { 
       jQuery(this).find('.iphone_switch').animate({backgroundPosition: -53}, "normal", function() { 
        jQuery(this).attr('src', settings.switch_off_container_path); 
        switched_off_callback(theId); 
       }); 
       state = 'off'; 
      } 
      else { 
       jQuery(this).find('.iphone_switch').animate({backgroundPosition: 0}, "normal", function() { 
        switched_on_callback(theId); 
       }); 
       jQuery(this).find('.iphone_switch').attr('src', settings.switch_on_container_path); 
       state = 'on'; 
      } 
     }); 

дайте мне знать, если вам нужна дополнительная информация. любая помощь очень ценится !!

ответ

0

Похоже, у вас есть переменная глобального состояния вместо переменной состояния, характерной для каждого коммутатора. Вы должны добавить атрибут для каждого переключателя с именем state и проверить его.

+0

Я думаю, что это все, но как я могу добавить добавление attr? – mlebrun15

+0

ОК получил. просто использовал функцию data() для хранения переменной состояния. еще раз спасибо. – mlebrun15

Смежные вопросы