2012-07-04 60 views
0

我正在创建一个水平滚动网站。每当我点击菜单链接时,我使用scrollto滚动到选定的部分,但是当我滚动到使用滚动部分时,而不是链接时,它会导致导航样式。 我认为问题是我有滚动事件中的代码,并滚动到其触发滚动事件?当我使用scrollto jquery插件时,需要绑定/解除绑定滚动事件吗?

我想要实现的是强调在导航菜单当前链接时: 1)我点击它 2)我手动滚动到与浏览器滚动条的某个部分 3)我点击下一个/上链接

也许问题出在这一部分:

var position = Math.abs($('#slider ul').offset().left - 138); 
$('p.status').html('index:' + getCurrentSectionIndex(position)); 

//disable the scroll event so it doesn't broke the flow 
$('#slider').unbind('scroll',handler); 

//scrolls to the selected section 
$('#slider').scrollTo($('#' + $(this).attr('class')), 800, { axis: 'x' }); 

//enable again the scroll event 
//$('#slider').bind('scroll',handler); 
var timeout = setTimeout(function() { 
    $('#slider').bind('scroll',handler); 
}, 3000); 

我是新来的jQuery,所以如果你发现可以改进的任何事情,请告诉me.Any的建议是欢迎:)

我不喜欢“知道,如果我已经解释了这口井,所以这是代码jsfiddle

我使用一些代码从这个question

回答

0

嗯,我做了一个‘你的代码的简单的’版本,它看起来就像你想要的那样工作。

Click here to see the jsfiddle live demo

一些更新的有:

可变index临危当前项的索引。

根据index,使用eq:()选择器会突出显示导航中相应的项目,并且我使用相同的方法滚动页面。

和IM使用ScrollTo的回调(onAfter)插件的滚动事件再次绑定:

$('#slider').scrollTo('ul li:eq(' + index + ')', 800, { 
    axis: 'x', 
    onAfter: function() { 
     $('#slider').bind('scroll', handler); 
    } 
}); 

我有任何疑问的配置!

+0

是的,它的工作原理!很简单!我仍然有问题,链接号码6不会突出显示,我不知道为什么。并且此错误会导致下一个/上一页按钮失败。 – Oterox

+0

@Oterox:数字6左边的偏移量不在滚动div的左边,这就是为什么它没有按预期工作。 – void

+0

,但是当我点击菜单导航链接6滚动移动正常,面板#6的左偏移正在击中滚动div的左侧? – Oterox