2013-10-31 41 views
1

当menu_i_j被按下时,我需要打开page_i_j,但i和j不是固定值。按钮[#menu_page_i_j]的jQuery - 重复类似按钮

for(var i=0; i<10; i++){ 
    for(var j=0; j<10; j++){ 
      $('#menu_page_'+$i+'_'+$j+'').click(function(){ 
      if($('#page_'+$i+'_'+$j+'').is(':hidden')){ 
       $('#page_'+$i+'_'+$j+'').fadeIn(200); 
      } 
     }); 
    } 
} 

HTML/PHP(有些凌乱,不好意思):

for($i=1;$i<=$menu_quant;$i++) { 
       echo ' 
        <a href="#"><div class="menu"> 
         <div class="menu_title"> 
          '.${'menu_title_'.$i}.' 
         </div> 
         <a href=""> 
         <div class="menu_options"> 
          ';for($j=1;$j<=${'menu_options_'.$j.'_quant'};$j++) { 
           echo '<a href="#?m='.$i.'&s='.$j.'"><font color="#1d70b3"><div id="menu_page_'.$i.'_'.$j.'"class="menu_options_hover">'.${'menu_options_' .$i. '_' .$j}.'</div></font><br></a>'; 
           }echo ' 
         </div> 
         </a> 
        </div></a>'; 
        } 
+1

你可以显示你的html标记以及..你的for循环..在哪里? –

+0

声音Tabs的事情,你可以检查其他人如何为标签或手风琴,如jQuery UI。 – caoglish

回答

2

您不需要遍历ij的值来设置处理程序。你可以使用一个选择器:

$("[id*='button_i'][id*='_j']").click(function(e) { 
    var selector = '#page' + e.target.id.slice(e.target.id.indexOf('_')); 
    if($(selector).is(':hidden')){ 
     $(selector).fadeIn(200); 
    } 
}); 

这是一个fiddle演示如何添加处理程序。

+0

OMG ... O_O PERFECT ...感谢您的演示!帮了很多!!!!!!!! – BrunoWB

0

我想这一点,首先,一类添加到这些菜单项,像“类=“menu_button””,然后执行:

$('.menu_button').on('click',function(){ 
    id = this.id.replace('button','page'); 
    if ($('#'+id).is(':hidden')) $('#'+id).fadeIn(200) 
}) 

这是干净多了,也许你甚至不需要一个类,类似‘$(‘#菜单’)’可以工作,如果所有的链接是锚内有ID为'menu'的元素

0
$('.menu_options').on('click', 'a', function(){ 
    var $this = $(this); 

    if ($this.is(':hidden')) { 
     $this.fadeIn(200); 
    } 
}); 

这是一个更好的更好的解决方案性能明智。您将处理程序附加到父元素,并在事件冒泡时捕获该事件。