单击锚点时更改href

时间:2013-10-06 07:26:51

标签: javascript jquery html css

我对如何动态更改按钮中的href=""有疑问。

下面的jsfiddle显示了一个固定在视口底部的按钮,从登录页面开始:

http://jsfiddle.net/Hm6mA/3/

按钮的html如下:

<div class="button">
    <a href="#first" class="" style="width: 80px; height: 80px; opacity: 1;">
        <img src="img/down.png" alt="down">
    </a>
</div> 

单击它时,我希望它滚动到下一部分,并将href =“”更改为页面的以下部分。因此,首次单击时,href将更改为#second。当用户手动滚过某个部分时,显然还需要更改。

这适用于单页网站。我怎么会这样做?

4 个答案:

答案 0 :(得分:2)

使用.prop()更改其值

$(".button").on('click', function(){
    $('.button').find('a').prop('href', '#services');
});

Demo

答案 1 :(得分:1)

我不习惯jquery。这是一个纯粹的JavaScript解决方案。它肯定会改变哈希值。

<body>

    <div id="sections">

        <section id="s100">asdfasd</section>
        <section id="s101"></section>
        <section id="s102"></section>
        <section id="s103"></section>
        <section id="s104">asdfasdasdfsdf</section>
        <section id="s105"></section>

    </div>

    <div class="nav-bar">

        <a id="next-button" class="button" href="#s100">Next</a>

    </div>

    <script type="text/javascript">

        var sections = document.getElementById("sections");

        var nextButton = document.getElementById('next-button');

        sections.onscroll = function (evt) {

        }


        var counter = 100;
        var limit = 105;

        // closure
        nextButton.onmouseup = function (evt) {

            var incCounter = function () {
                // add your custom conditions here

                if(counter <= limit)
                    return counter++;
                return 0;
            };

            var c = incCounter();
            if(c != 0)
                this.setAttribute('href', "#s" + c);
        }

    </script>

</body>

CSS

html, body {
            height: 100%;
            width: 100%;
            overflow: hidden;
        }

        #sections {
            height: 50%;
            width: 100%;
            overflow: scroll;
        }

        .nav-bar {
            margin: 30px 20px;
        }

        .button {
            text-decoration: none;
            border: 1px solid #999;
            padding: 10px;
            font-size: 120%;
        }

答案 2 :(得分:1)

我为此编写了一个小的jQuery插件,只是将其推送到GitHub。 https://github.com/ferdinandtorggler/scrollstack

你基本上想做的是打电话

$('.button').scrollstack({stack: ['#first', '#second', ... ]});

当你在按钮上调用它时,你甚至不需要链接。所以检查一下,让我知道它是否适合你。 ;)

在这里,您可以尝试并阅读更多内容:http://ferdinandtorggler.github.io/scrollstack/

答案 3 :(得分:1)

您可以使用fullPage.js插件来实现您想要的效果。也许它比从cero编码更快:)