0

このコードでループするにはどうすればよいですか? 短くしたいのですが、 #nav_app_page_5 は foreach にあり、コードは id #nav_app_page_{$pageID} に表示されます

   <script type='text/javascript'>
       var j = jQuery.noConflict();
            j(document).ready(function() {

           j( 'p:eq(1)' ).show();
           j( 'p:eq(2), p:eq(3), p:eq(4), p:eq(5), p:eq(6), p:eq(7), p:eq(8), p:eq(9), p:eq(10), p:eq(11)' ).hide();

           j( '#nav_app_page_0').click(function(){  

           j( 'p:eq(1)' ).show();

           });
           j( '#nav_app_page_1').click(function(){  

           j( 'p:eq(2)' ).show();
           j( 'p:eq(1)' ).hide();

           });
           j( '#nav_app_page_2').click(function(){  

           j( 'p:eq(3)' ).show();
           j( 'p:eq(2)' ).hide();
           });
           j( '#nav_app_page_3').click(function(){  

           j( 'p:eq(4)' ).show();
           j( 'p:eq(3)' ).hide();

           });

    });
    </script>
4

1 に答える 1

1

あなたが提出したコードに基づいて、この答えを考えることができます。

私の仮定は、インデックスが X の場合、

#nav_app_page_(X + 1) を ID として使用し、#nav_app_page_(X-1) id 要素を非表示にします。その場合、次のコードを提案できます

 for(var idx=0; idx < 3; idx ++){
   j( '#nav_app_page_'+idx).click(function(){  
     if(j( 'p:eq(' + (idx + 1)+ ')' ).length > 0){
       j( 'p:eq(' + (idx+1) + ')' ).show();
     }
     if((idx - 1) >= 0 && j( 'p:eq(' + (idx - 1)+ ')' ).length > 0) {
       j( 'p:eq(' + (idx - 1) + ')' ).hide();
     }
   });
 }

show() または hide() を呼び出す前に、コードは要素が存在するかどうかをチェックすることに注意してください。2 番目の条件では、hide() を呼び出す前に、負でないインデックスと要素の存在を確認します。

お役に立てれば。

于 2013-07-03T13:26:19.720 に答える