为什么我不能让jQuery leftScroll动画工作?
所以我尝试使用jQuery制作一个简单的水平滚动动画,但它不会启动,为什么 HTML为什么我不能让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</
<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');
});