2011-12-31 69 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