1

我需要在按下 menu_i_j 时打开 page_i_j,但 i 和 j 不是固定值。

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[#menu_page_i_j](有点乱,抱歉):

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>';
                    }
4

3 回答 3

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);   
    }
});

这是一个演示如何添加处理程序的小提琴。

于 2013-10-31T03:21:08.193 回答
0

我会首先为这些菜单项添加一个类,例如“class ='menu_button'”,然后执行以下操作:

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

这更干净,也许你甚至不需要一个类,如果你的所有链接都是id为'menu'的元素内的锚点,像“$('#menu a')”这样的东西可以工作

于 2013-10-31T03:20:50.547 回答
0
$('.menu_options').on('click', 'a', function(){
    var $this = $(this);

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

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

于 2013-10-31T03:24:31.983 回答