Jquery offset返回了错误的值

Jquery offset返回了错误的值,jquery,offset,Jquery,Offset,我有一个折叠的侧边栏(使用bootstrap),我正在尝试确保折叠的侧边栏 元素在显示时滚动到 为了做到这一点,我使用jQuery的offset(),它在第一次单击时返回0 并在第二次单击时返回正确的偏移量 这是我的密码: $.each($('[data-toggle="collapse"]'), function() { $(this).on("click", function() { if ($(this).is('A')) {

我有一个折叠的侧边栏(使用bootstrap),我正在尝试确保折叠的侧边栏 元素在显示时滚动到

为了做到这一点,我使用jQuery的offset(),它在第一次单击时返回0 并在第二次单击时返回正确的偏移量

这是我的密码:

    $.each($('[data-toggle="collapse"]'), function() {
        $(this).on("click", function() { 
            if ($(this).is('A')) { 
                event.preventDefault(); $(this).toggleClass("active");
                var x = $(this).attr("href");
                console.log($(x).offset().top)

            }
        })
    })

设置为
display:none
的项目位于页面流之外,这意味着它们不会占用页面内的空间。这意味着,虽然它们被设置为
显示:无
,但它们没有偏移值

第一次单击时,浏览器将尝试查找偏移量,即0,然后显示图元。显示元素后,将立即给出“左偏移/顶偏移”值


您可能希望使用当前版本的代码创建一个示例。在没有看到更多代码的情况下给出推荐是非常困难的。我同意,最好做一个JSFIDLE。给我们尽可能多的信息,以帮助您!听起来您的折叠元素被设置为
display:none
,它没有偏移值,因为它在页面中不存在flow@AdamBotley这就是答案,我错过了:)谢谢。谢天谢地,我自己永远也不会明白这一点!