为什么我不能让jQuery leftScroll动画工作?

为什么我不能让jQuery leftScroll动画工作?,jquery,html,css,Jquery,Html,Css,所以我尝试使用jQuery制作一个简单的水平滚动动画,但它不会启动,为什么 HTML <a href="#1">1</a> <a href="#2">2</a> <a href="#3">3</a> <section> <a name="1">1</a> <a name="2">2</a> <a name="3">3</

所以我尝试使用jQuery制作一个简单的水平滚动动画,但它不会启动,为什么

HTML

<a href="#1">1</a>
<a href="#2">2</a>
<a href="#3">3</a>

<section>
    <a name="1">1</a>
    <a name="2">2</a>
    <a name="3">3</a>
<section>
​jQuery

$('a[href]').click(function(){

    $('section').stop().animate({
        scrollLeft: $(this.hash).offset().left
    }, 1000);

});​
这可能会起作用:

var w = [];
var wt = 0;

$('section a').each(function(i,v){
    (i == 0) ? wt = 0 : wt += $(this).width();
     w.push(wt);
});


$('a[href]').click(function(){
    var n = this.hash.replace('#','');
    var el = $.find("a[name='"+n+"']");
    console.log(w[n-1]);
    $('section').animate({
        scrollLeft: w[n-1]
    }, 1000);

});

我通过将jQuery代码更改为:

$('a[href]').click(function(){

    var basePos = $("a[name]").offset().left/-1; // Get position of first a[name]
    var scrollPos = $("a[name='" + this.hash.replace('#','') + "']").offset().left;

    $('section').stop().animate({
        scrollLeft: basePos + scrollPos 
    }, 'fast');

});​

@MCSI不适用于我,我正在使用Chrome?感谢您指出正确的方向。但是,您的代码有一些限制,例如,它假定“a[href]”和“a[name]”以升序命名。我通过引用第一个“a[name]”相对于滚动到“a[name]”的位置来解决这个问题。
$('a[href]').click(function(){

    var basePos = $("a[name]").offset().left/-1; // Get position of first a[name]
    var scrollPos = $("a[name='" + this.hash.replace('#','') + "']").offset().left;

    $('section').stop().animate({
        scrollLeft: basePos + scrollPos 
    }, 'fast');

});​