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() 之前,代码会检查元素是否存在。在第二个条件中,它在调用 hide() 之前检查非负索引和元素是否存在。

希望这可以帮助。

于 2013-07-03T13:26:19.720 回答