From: Scott González Date: Mon, 27 Sep 2010 13:10:18 +0000 (-0400) Subject: Autocomplete (Menu): Only traverse through .ui-menu-item elements for paging. Fixes... X-Git-Tag: 1.8.6~58 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=dda7bcb6383ed0fee9dcd1ae5f0a6e1dcc160c6b;p=jquery-ui.git Autocomplete (Menu): Only traverse through .ui-menu-item elements for paging. Fixes #6029 - Autocomplete: Custom item can be activated (and result in error) on PageUp/PageDown key click. --- diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js index 3dbcb9cf4..680a81f29 100644 --- a/ui/jquery.ui.autocomplete.js +++ b/ui/jquery.ui.autocomplete.js @@ -501,12 +501,12 @@ $.widget("ui.menu", { if (this.hasScroll()) { // TODO merge with no-scroll-else if (!this.active || this.last()) { - this.activate(event, this.element.children(":first")); + this.activate(event, this.element.children(".ui-menu-item:first")); return; } var base = this.active.offset().top, height = this.element.height(), - result = this.element.children("li").filter(function() { + result = this.element.children(".ui-menu-item").filter(function() { var close = $(this).offset().top - base - height + $(this).height(); // TODO improve approximation return close < 10 && close > -10; @@ -514,11 +514,12 @@ $.widget("ui.menu", { // TODO try to catch this earlier when scrollTop indicates the last page anyway if (!result.length) { - result = this.element.children(":last"); + result = this.element.children(".ui-menu-item:last"); } this.activate(event, result); } else { - this.activate(event, this.element.children(!this.active || this.last() ? ":first" : ":last")); + this.activate(event, this.element.children(".ui-menu-item") + .filter(!this.active || this.last() ? ":first" : ":last")); } }, @@ -527,13 +528,13 @@ $.widget("ui.menu", { if (this.hasScroll()) { // TODO merge with no-scroll-else if (!this.active || this.first()) { - this.activate(event, this.element.children(":last")); + this.activate(event, this.element.children(".ui-menu-item:last")); return; } var base = this.active.offset().top, height = this.element.height(); - result = this.element.children("li").filter(function() { + result = this.element.children(".ui-menu-item").filter(function() { var close = $(this).offset().top - base + height - $(this).height(); // TODO improve approximation return close < 10 && close > -10; @@ -541,11 +542,12 @@ $.widget("ui.menu", { // TODO try to catch this earlier when scrollTop indicates the last page anyway if (!result.length) { - result = this.element.children(":first"); + result = this.element.children(".ui-menu-item:first"); } this.activate(event, result); } else { - this.activate(event, this.element.children(!this.active || this.first() ? ":last" : ":first")); + this.activate(event, this.element.children(".ui-menu-item") + .filter(!this.active || this.first() ? ":last" : ":first")); } },