Мое первое предположение состоит в том, что вы определили функцию в цикле. Ключевой вопрос заключается в следующем:
for(...) {
request.onsuccess = function() {
//...
};
}
Существуют допустимые способы определения функций в циклах, но приведенный выше пример не один. В общем, определение функции в цикле - дело грязное, поэтому по соглашению я бы рекомендовал просто полностью его избегать. Вместо этого попробуйте этот шаблон:
function outerfunction() {
function innerhelperfunction(){}
for(...) {
request.onsuccess = innerhelperfunction;
}
}
См., Например, Javascript: создание функций в цикле For
Когда вы объявляете div управления аккордеоном, вы можете поместить высоту в тег стиля для div. Затем вы можете установить свойство fillSpace: true, чтобы заставить элемент управления аккордеоном заполнить это пространство div независимо ни от чего. Это означает, что вы можете установить высоту так, как удобно для вашей страницы. Затем вы можете изменить высоту div при добавлении кода
Если вы хотите, чтобы аккордеон динамически изменял размер в соответствии с содержимым, которое он содержит, по мере необходимости, вы можете сделать следующий трюк опубликованный на сайте jQuery UI.
//getter
var autoHeight = $( ".selector" ).accordion( "option", "autoHeight" );
//setter
$( ".selector" ).accordion( "option", "autoHeight", false );
Это означает, что когда вы выбираете область с большим количеством текста, аккордеон будет пересчитывать его.
Используйте опция heightStyle управлять высотой аккордеона и каждой панели.
$("#accordion").accordion({
heightStyle: "content"
});
Возможные значения:
Просто вызовите метод accordions .resize ()
, он пересчитает его размер.
http://docs.jquery.com/UI/Accordion#method-resize