首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery可移动与当前目标锚点位置相邻的框

问jQuery可移动与当前目标锚点位置相邻的框
EN

Stack Overflow用户
提问于 2013-01-25 09:03:29
回答 2查看 291关注 0票数 3

在此页面上> http://canvas.clickbump.com/example/

我有一个浮动的“目录”框,它有指向页面上几个隐藏锚点元素的超链接:

代码语言:javascript
复制
<a id="anchor1">This is anchor 1</a>

和

代码语言:javascript
复制
<a id="anchor2">This is anchor 2</a>

框的标记:

代码语言:javascript
复制
<details class="cb-toc" open="open">
    <summary>Table of Contents</summary>
    <ol>
        <li><a href="#top">GoTo Top</a></li>
        <li><a href="#anchor1">GoTo Anchor 1</a></li>
        <li><a href="#anchor2">GoTo Anchor 2</a></li>
    </ol>
</details>

我正在尝试使用下面的jQuery脚本来绑定目录链接上的点击,以便它将浮动框移动到目标锚点附近的位置。然而,它的命中或未命中。在锚点上单击两次即可将长方体移动到适当的位置。

下面是我使用的jQuery:

代码语言:javascript
复制
jQuery('.cb-toc a').on('click',foo);
function foo(){
    jQuery('a:target').after(jQuery('.cb-toc'));
}

你知道怎么做才能让它在每次第一次点击时将框移动到合适的位置吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-25 09:28:11

手动选择正确的锚点:

代码语言:javascript
复制
jQuery('.cb-toc a').click(function(e){
    var str = jQuery(this).attr('href');
    jQuery(str).after(jQuery('.cb-toc'));
}
票数 2
EN

Stack Overflow用户

发布于 2013-01-25 09:19:16

当你的点击处理程序运行时,新的目标还没有被设置,它将在之后发生。这就是为什么TOC总是将自己定位在前一个目标的旁边(在同一链接上单击两次后工作正常)。

您可以使用setTimeout()延迟目录放置的执行,也可以侦听在浏览器设置新目标时触发的onhashchange事件。或者,您可以简单地放弃:target方法,自己找到正确的锚点,例如:

代码语言:javascript
复制
function foo() {
     //hash will be something like #top
     var hash = this.hash;

     //wait, it looks like an ID selector :)
     jQuery(hash).after(jQuery('.cb-toc'));
}

jsFiddle Demo

可能需要做一些工作,所以在每个浏览器(#whatever)中,hash变量总是保存正确的值,所以这个示例并不是生产就绪的代码,只是一个示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14513694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档