cristi
cristi

Reputation: 397

How can I stop this event from firing?

I have this site:

link

In the right sidebar, you'll notice that the last element runs with scrolling.

The problem is that does not stop ... go to the bottom of all.

enter image description here

I tried this function to accomplish the task

CODE JS:

   var aux=0;
   $("#text-3").addClass("follow-scroll");
   var _footerH=$("#footer-container").outerHeight();
   var _docH=$(document).height();
   var _scrollP= $(window).scrollTop();
   console.log("pozitie scroll",_scrollP);
   console.log("inaltime footer",_footerH);
   console.log("inaltime document HTML",_docH);
   var element = $('.follow-scroll'),
       originalY = element.offset().top;
       var topMargin = 20;
   element.css('position', 'relative');

     $(window).on('scroll', function(event) {
        var scrollTop = $(window).scrollTop();
        console.log(scrollTop);
        console.log("originalY:",originalY);
        console.log("Scrolltop:",scrollTop);
        console.log("topMargin:",topMargin);

        var y = scrollTop - originalY + topMargin;

       if(scrollTop < originalY) {

           console.log("nu s-a declansat evenimentul");

       }else {
       //aici trebe adaugat top la div
        aux=scrollTop - originalY + topMargin
        $( '.follow-scroll' ).css( 'top', aux );
         if(scrollTop>6000)
         {
          var _div = $( ".follow-scroll" );
          var position = _div.position();
          var top2=aux;
           //aici trebuie sa primeasca ultimul top
           $( '.follow-scroll' ).css( 'top', aux );
         }
       }


     //  top=aux;
    //   console.log("top_nou:",aux);


    });

Can you help me solve this problem? How can I stop this element at some point?

Thanks in advance!

Upvotes: 1

Views: 72

Answers (1)

DGS
DGS

Reputation: 6025

Try changing your code to this

 var aux = 0;
 $("#text-3").addClass("follow-scroll");
 var _footerH = $("#footer-container").outerHeight();
 var _docH = $(document).height();
 var _scrollP = $(window).scrollTop();
 console.log("pozitie scroll", _scrollP);
 console.log("inaltime footer", _footerH);
 console.log("inaltime document HTML", _docH);
 var element = $('.follow-scroll'),
     originalY = element.offset().top;
 var topMargin = 20;
 element.css('position', 'relative');

 $(window).on('scroll', function (event) {
     var scrollTop = $(window).scrollTop();
     console.log(scrollTop);
     console.log("originalY:", originalY);
     console.log("Scrolltop:", scrollTop);
     console.log("topMargin:", topMargin);

     var y = scrollTop - originalY + topMargin;

     if (scrollTop < originalY) {
         console.log("nu s-a declansat evenimentul");
     } else {
         //aici trebe adaugat top la div
         aux = scrollTop - originalY + topMargin
         if (scrollTop > 6000) {
             var _div = $(".follow-scroll");
             var position = _div.position();
             var top2 = aux;
             //aici trebuie sa primeasca ultimul top
         }else{
             $('.follow-scroll').css('top', aux);
         }
     }
 });

You will notice the that you should only set $('.follow-scroll').css('top', aux); if scrollTop <= 6000 otherwise leave it where it is

Upvotes: 1

Related Questions