jQuery动画不能在Firefox的IE中工作?

时间:2014-05-13 14:57:08

标签: javascript jquery html css

我有一个功能,我想横向滚动我的网页,我有以下情况在Chrome中运行良好只有当我来FirefoxInternet Explorer进行测试时它才会发生故障。任何人都可以在我的语法中看到任何明显的错误吗?

/* Navigtion */
$('nav ol li a').click(function(e){
    e.preventDefault();
    $('nav').find('.active').removeClass('active'); 
    $(this).addClass('active'); 


    if( $(this).hasClass('sectionOne') ){

        scrollTo = $('.section-one').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    } else if( $(this).hasClass('sectionTwo') ){

        scrollTo = $('.section-two').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    } else if( $(this).hasClass('sectionThree') ){

        scrollTo = $('.section-three').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    } else if( $(this).hasClass('sectionFour') ){

        scrollTo = $('.section-four').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    } else if( $(this).hasClass('sectionFive') ){

        scrollTo = $('.section-five').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    } else if( $(this).hasClass('sectionSix') ){

        scrollTo = $('.section-six').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    } else if( $(this).hasClass('sectionSeven') ){

        scrollTo = $('.section-seven').position().left;             
        $('body').animate({'scrollLeft': scrollTo}, 800);

    }



});

2 个答案:

答案 0 :(得分:4)

不同的浏览器将滚动条附加到不同的元素,您必须这样做

$('html, body').animate({'scrollLeft': scrollTo}, 800);

尝试找出比所有if / else语句更好的方法,这里是一个例子。

向锚点添加数据属性

<nav>
   <ol>
      <li>
         <a data-section="section-one" ....

你可以删除所有的if / else疯狂并用两行做同样的事情

var scrollTo = $('.' + $(this).data('section')).position().left;             
$('html, body').animate({'scrollLeft': scrollTo}, 800);

答案 1 :(得分:0)

尝试:

$('body').animate({'scrollLeft': scrollTo}, 800);
$('html').animate({'scrollLeft': scrollTo}, 800);

有些浏览器使用&#39; html&#39;并且有些人使用&#39; body&#39;