使用url锚点不能与onclick事件一起使用

时间:2013-08-01 13:57:22

标签: jquery animation

我有一个滚动到顶部的链接

<a href="index.html?test=test#slides-1" id="re" class="ancLinks"></a>
$("a.ancLinks").click(function (){
            elementClick = $("this").attr("href");
            $('html, body').animate({
            scrollTop: $(elementClick).offset().top
            }, 1000);
        });

当我取出url(index.html?test = test)时,它可以工作。但我需要绝对链接在网址中。出了什么问题

2 个答案:

答案 0 :(得分:3)

我想你想要:

DEMO

$("a.ancLinks").click(function (e){
            e.preventDefault();
            elementClick = this.hash;
            $('html, body').animate({
            scrollTop: $(elementClick).offset().top
            }, 1000);
        });

答案 1 :(得分:0)

您正在尝试获取元素的偏移位置,该元素归结为“index.html?test = test#slide-1”,这不是元素而是URI。

应该从真实的DOM元素(可能是目标)获取元素偏移量。您可以通过执行以下操作来实现此目的:

$('a.ancLinks').click(function(event) {
    var $this = $(this),
        href = $this.attr('href'),
        target = $this.data('target') || (href.indexOf('#') !== -1 ? '#'+href.split('#').pop() : false);

    if (!target) return true;
    var $target = $(target);

    if ($target.length == 0) return true;
    event.preventDefault();
    var offset = $target.offset();

    $('html, body').animate({
        scrollTop: offset.top || 0
    });
});

适用于<a href="anyurl.html#your-html-ID"><a href="anypage.html" data-target="#your-html-ID">