2011-12-31 67 views
1

我正在測試標籤插件,我想要做的一件事是當用戶用選項卡的散列點擊鏈接(從外部網站或頁面內),瀏覽器不會跳轉到標籤的位置,而是切換到它。jQuery Tools的標籤組件如何防止錨點跳躍?

這是jQuery Tools的標籤組件如何去做的。如果您點擊下面的鏈接,窗口不會滾動,並顯示相應的標籤:

http://flowplayer.org/tools/demos/tabs/anchors.html#first

http://flowplayer.org/tools/demos/tabs/anchors.html#second

http://flowplayer.org/tools/demos/tabs/anchors.html#third

與jQuery UI選項卡比較它下面的演示。該窗口會在打開的頁面滾動:

http://jqueryui.com/demos/tabs/#tabs-1

http://jqueryui.com/demos/tabs/#tabs-2

http://jqueryui.com/demos/tabs/#tabs-3

One of the answers到類似的問題在SO建議此的document.ready處理程序中:

setTimeout(function() { 
    if (location.hash) { 
    window.scrollTo(0, 0); 
    } 
}, 1); 

這種方式可行,但與流式播放相比,滾動效果非常明顯er.org的。我想知道flowplayer.org的腳本如何達到這種完美效果?看完他們的演示代碼後,我找不到任何東西。任何幫助表示讚賞,謝謝!

+0

嗨,不是100%確定你的問題,但你有沒有看過[demos.js](http://jqueryui.com/js/demos.js)?底部是一些有關哈希和窗口滾動的功能,看起來不祥 – 2011-12-31 03:36:07

+0

嗨,我讚揚了qeustion,起初聽起來有點混亂。我看了一下那個文件,但是我不認爲它符合我的要求:防止滾動到錨點。 – Dan7 2011-12-31 04:51:47

回答

2

在jquery的演示中使用具有set id屬性的元素的情況下,流水遊戲演示似乎沒有任何消息,因此我認爲沒有「跳躍」。然而,我不能爲了我的生活而弄清楚錨點如何/爲什麼會被識別。我懷疑它與jquery本身有什麼關係,因爲唯一的線路實際上是$("ul.tabs").tabs("div.panes > div");,但我可能是錯的,而其他人可以說明一些。

編輯:是不正確的jQuery在內部使用windows.location.hash,確實'使用'對抗href屬性。

+0

我不確定,但也許它使用'window.location.hash'來檢索錨?我需要看看這個。但是,沒有身份的東西只是在打擊我的思想,答案可能只是在我的鼻子下!一旦我確認它是'window.location.hash'進行出價,我會標記你的答案。 – Dan7 2011-12-31 04:57:34

+1

是的,它使用'window.location.hash' - 即使在縮小的JS(jquery.tools.min.js)中,顯然有一個處理程序正在尋找tabset中的一個標籤,其中有一個匹配' window.location.hash'。 :) – hobbs 2011-12-31 05:07:58

+0

@ hobbs剛剛抓住它:)那麼有這麼多小時跑在圈子裏... – Dan7 2011-12-31 05:12:06