2014-02-14 75 views
0

之外我有內部下面一個PHP foreach循環:當顯示循環的最後一個元素,展現另一種元素循環

<div class="form-row">...</div> 

這可以創建form-row div的無限量。我有下一個/後退按鈕,一次只顯示一個,所以你可以前後移動。

以外的是我有這個按鈕:

<button class="test"></button> 

我想要做的東西像下面這樣:

$('.form-row:last'){   
    $('button.test').show(); 
} 

例如,當它的form-row div的最後一個元素,我希望它顯示按鈕。

我該怎麼做?

如果是在form-row循環,那麼我只會使用$('button.test').last().show();,但因爲它超出了這個範圍,所以我不知道該怎麼做。

這是我的全碼:

    <?php global $current_user; 
        get_currentuserinfo(); 
        $user = $current_user->user_login; ?> 
        <form class="form" method="POST" action="<?php bloginfo('stylesheet_directory'); ?>/training-insert.php"> 
         <input type="hidden" value="<?php echo $user; ?>" name="test-user" /> 
         <input type="hidden" value="<?php echo the_title(); ?>" name="test-name" /> 
         <?php $counter = 1; if(get_field('step_by_step_training')): ?> 
         <?php while(the_repeater_field('step_by_step_training')): ?>  
          <div class="form-row"> 
           <h2 style="float:left;margin-left:7px;"> 
           <?php the_title(); ?> 
           </h2> 
           <h2 style="float:right;"><?php echo $counter; ?> of <?php echo $total; ?></h2> 
           <div class="clear"></div> 
           <div id="module-area" style="margin-top:0px!IMPORTANT;"> 
           <div id="modules-top"></div> 
           <div id="modules-repeat"> 
            <p class="training"><?php echo the_sub_field('introduction'); ?></p> 
            <?php if(get_sub_field('training_images')): ?> 
            <?php while(has_sub_field('training_images')): ?> 
            <img class="training" src="<?php echo the_sub_field('image'); ?>" /> 
            <?php endwhile; ?> 
            <?php endif; ?> 
            <p class="training"><?php echo the_sub_field('conclusion'); ?></p> 
            <div class="inner"></div> 
            <button class="next"></button> 
            <button class="end"></button> 
            <div class="clear"></div> 
           </div> 
           <div style="margin-bottom:5px;" id="modules-bottom"></div> 
           </div> 
          </div> 
         <?php $counter++; endwhile; ?> 
         <?php endif; ?> 
        </form> 
        <?php if (get_field('test') != "") { ?> 
         <form class="form" method="POST" action="<?php bloginfo('stylesheet_directory'); ?>/training-insert-alt.php"> 
          <input type="hidden" value="<?php echo $user; ?>" name="test-user" /> 
          <input type="hidden" value="<?php echo the_title(); ?>" name="test-name" /> 
          <input type="hidden" value="<?php echo the_field('test'); ?>" name="test-link" /> 
          <button class="test"></button> 
         </form> 
        <?php } ?> 

      <div class="clear"></div> 
      </div> 
     </div> 

    <?php endwhile; endif; ?> 
    </div> 

<?php get_footer(); ?> 

<script type="text/javascript"> 
jQuery(function($) { 
$(document).ready(function() {  

    // prepend a 'previous' button to all form-rows except the first 
    $('<button>').addClass('previous').appendTo($('.inner').not(':first')); 

    // hide all form-rows, but not the first one 
    $('.form-row').not(':first').hide(); 

    // hide on last step 
    $('button.next').last().hide(); 
    $('button.end').last().show(); 

if($('.form-row:last').is(':visible')) { 
    $('button.test').show(); 
} 

    // add the submit button to the last form-row 
    // $('<input>').addClass('submit').prop('type', 'submit').val('My Dashboard').appendTo($('.form-row:last')); 


    // handle the previous button, we need to use 'on' here as the 
    // previous buttons don't exist in the dom at page load 
    $('.form-row').on('click', 'button.previous', function(e) { 
     e.preventDefault(); 
     $(this).parents('div.form-row').hide().prev('div.form-row').show(); 
    }); 

    $('button.next').click(function(e) { 
     // prevent the next buttons from submitting the form 
     e.preventDefault(); 
     // hide this form-row, and show the next one 
     $(this).parents('div.form-row').hide().next('div.form-row').show(); 
    });  

}); 
}); 
</script> 
+0

也許這樣? http://api.jquery.com/last/ – GoE

+0

@GoE該按鈕位於循環之外,所以使用last時似乎不適用於我嘗試的操作。 – Rob

+1

你可以發佈你的循環?那麼我們可以更好地幫助您 – GoE

回答

0

我把它用這個工作:

$('.form-row').last().append($('button.test').show()); 
0
if($('.form-row:last').is(':visible')) { 
    $('button.test').show(); 
} 

包裹在一個函數並調用它每次你展示你的下一行。或者直接包括它您展示下一行的一部分:

$('button.next').click(function(e) { 
    // prevent the next buttons from submitting the form 
    e.preventDefault(); 
    // hide this form-row, and show the next one 
    $(this).parents('div.form-row').hide().next('div.form-row').show(); 

    if($('.form-row:last').is(':visible')) 
     $('button.test').show(); 
}); 

如果你想,當你按下前面的按鈕隱藏按鈕:

$('.form-row').on('click', 'button.previous', function(e) { 
    e.preventDefault(); 
    $(this).parents('div.form-row').hide().prev('div.form-row').show(); 
    $('button.test').hide(); 
}); 
相關問題