2012-07-04 103 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