使用数据属性滚动到元素

时间:2016-04-07 09:15:46

标签: javascript jquery html

我试图弄清楚如果元素匹配ID而不是使用锚标记,我可以使用数据属性将元素滚动到特定元素。这就是我的工作。

用户点击按钮后,它将显示内容并滚动到与数据属性匹配的特定元素。我似乎无法滚动

<div class="container">
    <div class="post" data-id="content-one">
        post one
    </div>
    <div class="post" data-id="content-two">
        post two
    </div>
</div>
<div class="container-two">
    <div id="content-one" class="post-content" >
      content one
    </div>
    <div id="content-two" class="post-content" >
      content two
    </div>
</div>
$(".container .post").on('click', function() {
    var data_id = $(this).data('id');
    $('.post-content').each(function() {
        var el = $(this);
        if (el.attr('id') == data_id)
            el.show();
        else
            el.hide();
    });
    $('html, body').animate({
        scrollTop: $(data_id).offset.top()
    }, 'slow');
});

https://jsfiddle.net/clestcruz/vf4ufg6b/

1 个答案:

答案 0 :(得分:7)

#连接到id以生成适当的选择器。另外使用.offset().top因为offset()是一个函数,它返回一个包含元素当前位置的对象。然后我们可以使用top密钥访问它。

$('html, body').animate({
    scrollTop: $( '#' + data_id).offset().top
}, 'slow');

DEMO