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

iの値を反復処理しjてハンドラーを設定する必要はありません。単一のセレクターを使用できます。

$("[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
$('.menu_options').on('click', 'a', function(){
    var $this = $(this);

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

これは、パフォーマンスに関してはるかに優れたソリューションです。ハンドラーを親要素にアタッチすると、イベントがバブルアップしたときにイベントをキャッチします。

于 2013-10-31T03:24:31.983 に答える
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 に答える