mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
Menu: Account for scrollbars in jQuery 3.2
jQuery >=3.2 doesn't include scrollbars in `.height()`, this commit switches it to `.innerHeight()` which does so in jQuery >=3.3. In jQuery 3.2 it doesn't either so include scrollbars in innerHeight, add it back. Using `.innerHeight()` instead of `.height()` should be fine as menu doesn't define padding styles. Closes gh-1929
This commit is contained in:
parent
5e2fc44c0c
commit
1712b9bbb2
@ -626,7 +626,13 @@ return $.widget( "ui.menu", {
|
|||||||
}
|
}
|
||||||
if ( this._hasScroll() ) {
|
if ( this._hasScroll() ) {
|
||||||
base = this.active.offset().top;
|
base = this.active.offset().top;
|
||||||
height = this.element.height();
|
height = this.element.innerHeight();
|
||||||
|
|
||||||
|
// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
|
||||||
|
if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
|
||||||
|
height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
|
||||||
|
}
|
||||||
|
|
||||||
this.active.nextAll( ".ui-menu-item" ).each( function() {
|
this.active.nextAll( ".ui-menu-item" ).each( function() {
|
||||||
item = $( this );
|
item = $( this );
|
||||||
return item.offset().top - base - height < 0;
|
return item.offset().top - base - height < 0;
|
||||||
@ -650,7 +656,13 @@ return $.widget( "ui.menu", {
|
|||||||
}
|
}
|
||||||
if ( this._hasScroll() ) {
|
if ( this._hasScroll() ) {
|
||||||
base = this.active.offset().top;
|
base = this.active.offset().top;
|
||||||
height = this.element.height();
|
height = this.element.innerHeight();
|
||||||
|
|
||||||
|
// jQuery 3.2 doesn't include scrollbars in innerHeight, add it back.
|
||||||
|
if ( $.fn.jquery.indexOf( "3.2." ) === 0 ) {
|
||||||
|
height += this.element[ 0 ].offsetHeight - this.element.outerHeight();
|
||||||
|
}
|
||||||
|
|
||||||
this.active.prevAll( ".ui-menu-item" ).each( function() {
|
this.active.prevAll( ".ui-menu-item" ).each( function() {
|
||||||
item = $( this );
|
item = $( this );
|
||||||
return item.offset().top - base + height > 0;
|
return item.offset().top - base + height > 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user