4 votes

Essayer de faire apparaître une div à l'écran

J'essayais de faire apparaître une div dans la vue et les éléments div sont ajoutés dynamiquement.. donc j'assigne un lien avec lequel un élément de div peut être amené dans la vue lorsqu'on clique dessus, peu importe s'il est déjà dans la vue. donc quand je clique sur le lien, si la div que j'essaie d'amener dans la vue est déjà dans la vue, elle disparaîtra de ma vue. est-ce un bug ??

http://jsfiddle.net/xFu3M/6/

J'ai ajouté un exemple fonctionnel.

le code est le suivant

$(".testClick").on("click",function(e){
    e.preventDefault(); 
      // Appeler la fonction de défilement
    goToByScroll("indID"+1);
});

function goToByScroll(id){
      // Retirer "link" de l'ID
    id = id.replace("link", "");
      // Défiler
    $('.contentBody').animate({
        scrollTop: $("#"+id).offset().top},
        'slow');
 }

1voto

Roko C. Buljan Points 46488

Il serait utile de prendre également en compte le décalage du parent :

<strong><a href="http://jsfiddle.net/xFu3M/11/" rel="nofollow">DEMO EN DIRECT</a></strong>

$(document).ready(function(){
    $(".wrapper").css({"width" : $(window).width() , "height" :  $(window).height()} );  
    $(".testClick").on("click",function(e){      
        e.preventDefault(); 
        goToByScroll("indID1"); // essayez de changer à indID4
    });       
});

function goToByScroll(id){
    var el = $('#'+id);
    var elOffs = el.offset().top;
    var parOffs = el.closest('.contentBody').offset().top;
    $('.contentBody').stop().animate({ scrollTop: elOffs - parOffs },800);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X