我有一个函数,我想水平滚动我的网页,我有以下功能,在Chrome中很好地工作,只有当我在Firefox和Internet 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);
    }
});发布于 2014-05-13 14:58:44
不同的浏览器将滚动条附加到不同的元素,您必须这样做。
$('html, body').animate({'scrollLeft': scrollTo}, 800);尝试找出一个比所有那些if / out语句更好的方法,下面是一个例子。
向锚点添加数据属性
<nav>
   <ol>
      <li>
         <a data-section="section-one" ....而且你可以消除所有的如果/其他疯狂,并做同样的两行
var scrollTo = $('.' + $(this).data('section')).position().left;             
$('html, body').animate({'scrollLeft': scrollTo}, 800);https://stackoverflow.com/questions/23634766
复制相似问题