我试图在元素打开时滚动到该元素的顶部(这使用的是bootstrap 3手风琴结构),但出现错误消息“ Uncaught TypeError:无法读取undefined的属性” top”,其中undefined为heading我猜?我不确定为什么会发生我在heading上执行的其他所有操作的问题,即removeClass()正常工作。

$('.checkout .collapse').on('shown.bs.collapse', function() {
    var heading =
        $('.checkout')
        .find('a[aria-controls="' + $(this).attr('id') + '"]');

    heading.removeClass('complete')
        .css('cursor', 'default');

    $('html, body').animate({
        scrollTop: heading.offset().top - 100
    }, 'slow');
});


编辑:添加$(html, body).ani ...时,标题似乎返回空对象,但是,如果我删除该部分,它将返回预期的结果。

最佳答案

尝试使用jQuery的length属性检查是否存在这样的元素

if (heading.length) {
    $('html, body').animate({
        scrollTop: heading.offset().top - 100
    }, 'slow');
}

关于javascript - 无法读取未定义的属性(已定义时),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31317453/

10-13 03:09