2012-03-06 78 views
1

http://gidzior.net/svg/pom01.html面板的右边是“#右面板礼”,红色按钮是“div.save”指数变化每次我点击一个按钮

从“#右面板按钮li'应该打开一个窗口并按下'div.save'应该关闭它,然后'#右侧面板li'应该再次打开它

当我点击数字从1到9的按钮时,脚本放置0 befor数字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"); 
    }); 
+0

我不是一个数字,它是在上下文的字符串。 – 2012-03-06 08:41:05

+0

@EvilP:它有所不同。它以一个数字开始,然后变成一个字符串。 – 2012-03-06 09:16:06

回答

1

,在跳出我的一个问题是:

if(i<=9){ 
    i = "0"+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; 
     }); 
    }); 
+0

作品完美,THX很多 – gidzior 2012-03-06 08:51:00

+0

我的意思是完美的:] – gidzior 2012-03-06 12:05:21

0

我想你应该在click(功能的范围界定i,或者更好yet-完全不定义它:

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

如何写这个条件为真,只有01,02,03 ... 09 ?? – gidzior 2012-03-06 08:42:37

-1

我不明白你为什么要做这样的事情,但我带了一个很短的解决方案。 尝试修改情况这样

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

这样你会检查i两个值为数字和字符串。

+0

呃? 'length'不是一个函数,你错过了一个'='...... – elclanrs 2012-03-06 08:43:01

+0

'length'是一个字符串的属性,而不是函数。并且一个条件是用两个'='写的,比如'if(i.length == 1)i =“0”+ i;' – 2012-03-06 08:43:18

+0

是的,我犯了一个错误,写得很快......回答编辑 – themarcuz 2012-03-06 08:44:32

0

我不确定错误。

但我尝试做我自己的索引。

变化

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

通过

var i = 1; 
在循环结束

放我++;

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