私は次のコードを手に入れました:
<script type="text/javascript">
jQuery(document).ready(function(){
var Opened = false;
jQuery('.expend-schedule').click(function(e){
// On empêche l'action
e.preventDefault();
// Variable
var DataType = jQuery(this).attr('data-type');
// On va fermer toutes les tables
jQuery('.schedule').each(function(){
// On va fermer uniquement si ouverte
if( jQuery(this).css('display') != 'none' && jQuery(this).attr('data-type') != DataType ){
// On ferme
jQuery(this).fadeOut( 500, function(){
// Est-ce que l'animation et l'ouverture s'est produite déjà ?
if(Opened === false){
var TableElement = jQuery('.schedule[data-type="'+DataType+'"]');
// On ouvre et on s'y déplace de façon automatique
TableElement.fadeIn(TableElement.height() * 0.47, function(){
jQuery('html, body').animate({
scrollTop: TableElement.offset().top - 50
}, 'slow');
});
// On dit que c'est ouvert, afin d'empêcher l'ouverture à de multiples reprises
// si'il y a eu un bug
Opened = true;
}
});
}
});
// On reset
Opened = false;
});
</script>
これは私のページの例です:
<h4 class="sep_bg"><a class="expend-schedule" data-type="week" href="#">Monday to Friday</a></h4>
<table class="schedule table table-condensed" data-type="week">
<thead>
<tr>
<th style="width: 60px;">Hour</th>
<th style="width: 710px;">Transit</th>
</tr>
</thead>
<tbody>
<tr>
<td>04h</td>
<td>04h15, 04h27, 04h39, 04h59</td>
</tr>
</tbody>
</table>
<h4 class="sep_bg"><a class="expend-schedule" data-type="saturday" href="#">Saturday</a></h4>
<table class="schedule table table-condensed" data-type="saturday">
<thead>
<tr>
<th style="width: 60px;">Hour</th>
<th style="width: 710px;">Transit</th>
</tr>
</thead>
<tbody>
<tr>
<td>04h</td>
<td>04h15, 04h27, 04h39, 04h59</td>
</tr>
</tbody>
</table>
だから私の問題は:
クラスがある場所をクリックするたびにexpend-schedule
、これは現在のスクロール位置から要素位置に移動するはずです。これは機能していますが、クリックするとページの一番上に移動し、要素の位置に移動する点が異なります。
何か案は?ありがとう。