两个DOM类运行相同的javascript类,弄乱了点击功能?

时间:2009-10-22 15:21:37

标签: jquery binding double-click

我有大约20个开/关开关发送一个更新表中字段的ajax请求。我已经复制了类附加到选择器的位置,因为我需要能够指定哪些开关打开或关闭。但是,我点击的第一个按钮有效,但在此之后,我有时需要点击一次其他按钮,其余按钮需要两次。这是一些代码!

附上课程:

$(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';
            }
        }); 

如果您需要更多信息,请与我们联系。非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

看起来你有一个全局状态变量而不是每个开关特有的状态变量。您应该为每个名为state的开关添加一个属性并检查它。