繁体   English   中英

单击链接后存储HREF值

[英]Storing HREF value after clicking link

所以我是JavaScript / jQuery的新手,我一直在尝试将它一点一点地应用到我的网站(www.joeyorlando.me)。

我正在尝试解决的当前问题是当用户点击页面顶部的一个链接时(即用户点击“背景”和页面),我的网站会慢慢向下滚动页面到正确的部分慢慢向下滚动到“背景”)。 理想情况下,我甚至希望滚动功能稍微超过该部分的顶部(可能是50-100px),然后顺利地“反弹”回到该部分的顶部。

我的想法是存储来自点击链接的HREF值,然后使用此href值让页面向下滚动到该部分。 我现在只关注第一部分,存储点击链接的HREF值,这是我到目前为止但它没有正常工作,控制台一直告诉我,当我尝试检查值时,未定义HREF单击其中一个链接后的HREF。

HTML代码

<nav>
  <ul>
    <li><a href="#about">About</a></li>
    <li><a href="#background">Background</a></li>
    <li><a href="#research">Research</a></li>
    <li><a href="#travels">Travels</a></li>
    <li><a href="#contact">Contact Me</a></li>
  </ul>
</nav>
<body>
  <div id="about"></div>
  <div id="background"></div>
  <div id="research"></div>
  <div id="travels"></div>
  <div id="contact"></div>

JavaScript代码

 $('nav ul li a').click(function() {
     window.location.href =  $(this).attr('href');
    var href =  $(this).attr('href');
 });

此外,布朗尼指向任何可以给我建议让页面慢慢向下滚动到正确位置的人。 我尝试使用.scrollTo(),但它对我来说不正常:(

先谢谢你们!

为什么你还需要存储href?

用这个:

$(document).ready(function() {
    $('ul li a').click(function() {
        var id = $(this).attr('href');
        $('html, body').animate({
            scrollTop : $(id).offset().top
        }, 500);
    });
});

在这里小提琴: http//jsfiddle.net/fd7U7/

这是对LorDex给出弹跳效果的答案的略微修改:

$(document).ready(function() {
    var body = $('html, body');
    $('ul li a').click(function() {
        var id = $(this).attr('href');
        var elem = $(id);
        var direction = elem.offset().top > $(document).scrollTop() ? 1 : -1;
        body.animate({
            scrollTop : elem.offset().top + (50 * direction)
        }, 500).promise().then(function() { 
            body.animate({
                scrollTop: elem.offset().top
            }, 500)
        });

    });
});

http://jsfiddle.net/fd7U7/3/

它将通过首先计算它是向上还是向下滚动来向任一方向反弹。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM