每次点击按钮时索引都会改变

时间:2012-03-06 08:31:47

标签: jquery

右边的

http://gidzior.net/svg/pom01.html面板是'#right-panel li',红色按钮是'div.save'

来自'#right-panel li'的

按钮应该打开一个窗口,按钮'div.save'应该关闭它然后'#right-panel li'应该再打开它

当我点击数字从1到9的按钮时,脚本输入0到数字1-9,索引是01,02,03 ...,当我再次点击它时索引是001,002 ,003,...等等,我如何设置索引始终保持不变? 01,02,03,04,05,06,07,08,09

//OPEN A WINDOW 
    $('#right-panel li').each(function(e){
        var i = $(this).index()+1;
        $(this).click(function(){
            if(i<=9){
                i = "0"+i;
            }
            $('#pom01par'+i+'WraperAbsolute').fadeIn("fast");
            $('#pom02par'+i+'WraperAbsolute').fadeIn("fast");
            $('#pom03par'+i+'WraperAbsolute').fadeIn("fast");
            $('#pom04par'+i+'WraperAbsolute').fadeIn("fast");
            $('#pom05par'+i+'WraperAbsolute').fadeIn("fast");
            $(this).css('background','#adff84');
            $('.par'+i+'table').css('background','#adff84');
            return false;
        });
    });


    // CLOSE A WINDOW
    $('div.save').click(function(){
        $(this).parent().fadeOut("fast");
    });

4 个答案:

答案 0 :(得分:1)

突然出现的一个问题是:

if(i<=9){
  i = "0"+i;
}

您正在修改i的值;

而是在点击功能中使用另一个变量:

$('#right-panel li').each(function(e){
        var i = $(this).index()+1;
        $(this).click(function(){
            var this_i = i;
            if(this_i<=9){
                this_i= "0"+i;
            }
            $('#pom01par'+this_i+'WraperAbsolute').fadeIn("fast");
            $('#pom02par'+this_i+'WraperAbsolute').fadeIn("fast");
            $('#pom03par'+this_i+'WraperAbsolute').fadeIn("fast");
            $('#pom04par'+this_i+'WraperAbsolute').fadeIn("fast");
            $('#pom05par'+this_i+'WraperAbsolute').fadeIn("fast");
            $(this).css('background','#adff84');
            $('.par'+this_i+'table').css('background','#adff84');
            return false;
        });
    });

答案 1 :(得分:0)

我认为您应该在i函数的范围内定义click(,或者更好的是 - 根本不定义它:

$(this).click(function(){
var iAsString = $(this).index()+1 + "";            
if($(this).index()+1<=9){
                iAsString = "0"+iAsString;
            }

答案 2 :(得分:0)

我不确定错误。

但我尝试制作自己的索引。

更改

var i = $(this).index()+1;

通过

var i = 1;

在循环结束时放i ++;

$('#right-panel li').each(function(e){
......
 i++;
}

答案 3 :(得分:-1)

我不明白你为什么要做这样的事情,但我提出了一个非常简短的解决方案。 尝试以这种方式修改条件

if(i<=9 && i.length==1){
    i = "0"+i;
}

这样你就可以将i的值作为数字和字符串来检查。