我在一个用 Bootstrap 构建的网站上有一堆手风琴。我正在尝试添加一种行为,一旦手风琴折叠完成,页面将滚动到打开的面板。它适用于除 IE 之外的所有浏览器(当然!)。这是我写的函数:
$('.accordion').on('hidden', function() {
$('.accordion .current').removeClass('current');
$(this).find('.in').prev().find('a').addClass('current');
$('html,body').animate({'scrollTop':$('.accordion-toggle.current').position().top},500);
})
IE 表示新创建的“当前”项目的 position() 属性未定义。我知道该对象在那里,因为我在 $('.current') 上运行了一个警报,它报告了 [object Object],但它似乎无法找到它的位置。和这个函数的执行队列有关系吗?它是在寻找一个还不存在的物体的位置吗?我在这里扯头发!
HTML:
<div id="accordion" class="accordion">
<div class="accordion-group">
<div class="accordion-heading">
<a class="accordion-toggle" href="#collapseOne" data-parent="#accordion" data-toggle="collapse">Panel 1</a>
</div>
<div id="collapseOne" class="accordion-body collapse">
<div class="accordion-inner">
<!-- Content goes here -->
</div>
</div>
</div>
</div>
@克里斯·霍勒贝克...
我希望它滚动到当前打开的窗格。Bootstrap 中没有自动提供该功能。它不会将类添加到标题中,而是添加到其下方的窗格中。我也希望标题在窗口中可见。我可能做错了,但这就是我正在尝试做的事情,并且冒着重复自己的风险,它适用于除 IE 之外的所有其他浏览器。
这是一个小提琴,它显示了我正在尝试做的事情。在 IE 中运行它,你会发现它不起作用。