0

これは、フィールドセットを折りたたんでアンカーまでスムーズにスクロールするための私の作業コードですが、スクロールする前にジャンプすることがあり、実際にはスムーズではありません。

function smoothScrollTo(element) {
    var thisTop = $($(element).parent()).offset().top;
    $("html, body").animate({
        scrollTop: thisTop + "px"
    }, {
        duration: 600
    });
    return false;
};

$(document).ready(function () {
    $(".collapsible .collapsed").hide();
    $(".collapsible legend").html(function () {
        var scroll = $(this).parent().hasClass('scroll');
        if (scroll == true) {
            href = "#" + $(this).parent().attr('id');
        } else {
            href = "javascript:void(0)";
        };
        return '<a href="' + href + '">' + $(this).html() + '</a>';
    }).click(function () {
        $(this).parent().children('.content').slideToggle();
    });
    $(".collapsible.scroll legend").click(function () {
        smoothScrollTo(this);
    });

});

私は解決策を見つけました:e.preventDefault();完全にスクロールする必要があります

最終的なコード:http://jsfiddle.net/eapo/v6URL/2/

4

1 に答える 1

1

http://jsfiddle.net/v6URL/1/

$(".collapsible.scroll legend").click(function (e) {
    e.preventDefault();
    smoothScrollTo(this);
});
于 2013-02-10T01:05:15.237 に答える