mkafiyan
mkafiyan

Reputation: 954

scrollTop not working in firefox and IE

I have some problem with scrolltop in firefox and IE I used scrolltop more than 2 time in my code in part one it works but in part two it doesnt I have two arrows "next" and "prev" which when clicking on them page scroll to specific part, I cant find how can I fix it?

jquery :

var lchiled=$("ul#portfolio li").last();
var fchiled=$("ul#portfolio li").first();
$('li.section').first();
$("ul#portfolio li:first-child").addClass("current");

$('a.display').on('click', function(e) {
    e.preventDefault();

    var t = $(this).attr('name');

    that = $(this);


    if (t === 'next') {
        if($('.current').next('.section').length==0)
            var $next = $('li.section').first();
        else
            var $next = $('.current').next('.section');

        var top = $next.offset().top -65;
        $('.current').removeClass('current');

        $('body,html').animate({
        scrollTop: top,
        }, 

        function () {
        $next.addClass('current');
        // alert(top);
        });
    }
    else if (t === 'prev' && $('.current').prev('li.section').length > 0) {
        var $prev = $('.current').prev('.section');
        var top = $prev.offset().top -65;
        $('.current').removeClass('current');

        $('body').animate({
             scrollTop: top,     
        }, function () {
            $prev.addClass('current');
        });
    } 

});

html :

<div id="container">

   <ul id="portfolio" class="clearfix">

   </ul>

</div>

lis are dynamically produce with jquery codes

Upvotes: 1

Views: 2808

Answers (4)

codermd
codermd

Reputation: 730

You can use window.scrollTo(x,y)

Upvotes: -1

Niet the Dark Absol
Niet the Dark Absol

Reputation: 324630

You use .animate on scrollTop in two places. In one, you (correctly) use html,body as the selector. In the other, you only use body. And you wonder why it doesn't work in some browsers ;)

Upvotes: 1

mkafiyan
mkafiyan

Reputation: 954

It must be like this

$('body,html').animate({
         scrollTop: top,     
    }, function () {
        $prev.addClass('current');
    });

insted of

$('body').animate({
         scrollTop: top,     
    }, function () {
        $prev.addClass('current');
    });

I forget to update the prev part so this problem happened.

Upvotes: 6

Ashwani Panwar
Ashwani Panwar

Reputation: 4568

try var offset = $(window).scrollTop(); this .

Upvotes: -1

Related Questions