Core: provide "includeHidden" parameter in $.ui.scrollParent

Even though the user is unable to scroll via the UI, authors
may have custom scrollbars that programmatically set scrollTop.
Therefore, overflow:hidden can be considered a scrollParent.
This commit is contained in:
Mike Sherov 2014-08-07 08:40:48 -04:00
parent 2ac0769967
commit 67e4b44b29

View File

@ -48,15 +48,16 @@ $.extend( $.ui, {
// plugins // plugins
$.fn.extend({ $.fn.extend({
scrollParent: function() { scrollParent: function( includeHidden ) {
var position = this.css( "position" ), var position = this.css( "position" ),
excludeStaticParent = position === "absolute", excludeStaticParent = position === "absolute",
overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
scrollParent = this.parents().filter( function() { scrollParent = this.parents().filter( function() {
var parent = $( this ); var parent = $( this );
if ( excludeStaticParent && parent.css( "position" ) === "static" ) { if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
return false; return false;
} }
return (/(auto|scroll)/).test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) );
}).eq( 0 ); }).eq( 0 );
return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent;