Решение: Обновление до jQuery UI 1.8.18 устранило эту проблему для меня.
Это не ответ, но он может предоставить больше информации по проблеме. Если вы следите за вызовами при нажатии клавиш «вверх» или «вниз» при открытом меню, вы попадаете в метод активации виджета меню, который вызывает метод hasScroll (строка 5487 с использованием v1.8.11);
hasScroll: function() {
return this.element.height() < this.element.attr("scrollHeight");
},
Кажется, что проблема в том, что атрибут scrollHeight не определен для элемента ul меню, и поэтому этот метод всегда возвращает false.
Вот метод активации:
activate: function( event, item ) {
this.deactivate();
if (this.hasScroll()) {
var offset = item.offset().top - this.element.offset().top,
scroll = this.element.attr("scrollTop"),
elementHeight = this.element.height();
if (offset < 0) {
this.element.attr("scrollTop", scroll + offset);
} else if (offset >= elementHeight) {
this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
}
}
this.active = item.eq(0)
.children("a")
.addClass("ui-state-hover")
.attr("id", "ui-active-menuitem")
.end();
this._trigger("focus", event, { item: item });
}
Даже если вы заставите метод hasScroll возвращать true, вы столкнетесь с другой проблемой, так как атрибут scrollTop также не определен.
Я дам вам знать, если я найду решение этой проблемы, так как оно мучает и мою заявку.