我正在尝试在元素打开时滚动到元素的顶部(这是使用bootstrap 3手风琴结构),但是我得到一个错误,说'未捕获的TypeError:无法读取属性'top'of undefined'其中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 ...
时,标题似乎返回空对象,但是如果我删除该部分则返回预期的内容。
答案 0 :(得分:2)
尝试使用jQuery的length
属性进行检查以查看此类元素是否存在
if (heading.length) {
$('html, body').animate({
scrollTop: heading.offset().top - 100
}, 'slow');
}
答案 1 :(得分:0)
您的代码中标题在animate方法中无法正常工作,因此您必须按照下面的说明进行替换
$('.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: $('.checkout').find('a[aria-controls="' + $(this).attr('id') + '"]').offset().top - 100
}, 'slow');
});
希望这会对你有帮助.. !!!