我正在使用以下内容来控制我的手风琴:
$(function() {
$( "#accordion" ).accordion({
autoHeight: false, collapsible: true, active: false
});
$('#accordion').bind('accordionchange', function (event, ui) {
$(window).scrollTop(ui.newHeader.offset().top);
});
});
除非我两次打开同一部分,否则效果很好。然后,手风琴冻结,我得到以下错误:
ui.newHeader.offset()未定义
答案 0 :(得分:3)
accordionchange
事件似乎是与手风琴的activate
事件相对应的jQuery事件;是的,这有点令人困惑,但那是source tells me:
// change events
(function( $, prototype ) {
//...
} else if ( type === "activate" ) {
ret = _trigger.call( this, "change", event, {
激活(event,ui)
激活面板后触发(动画完成后)。 [...]如果手风琴折叠,
ui.newHeader
和ui.newPanel
将是空的jQuery对象。
所以你的ui.newHeader
是一个空的jQuery对象,空的jQuery对象没有offset()
。对ui.newHeader
进行快速检查可能会让您感到厌烦:
$('#accordion').bind('accordionchange', function(event, ui) {
if(ui.newHeader.length)
$(window).scrollTop(ui.newHeader.offset().top);
});