mirror of
https://github.com/jquery/jquery-ui.git
synced 2024-11-21 11:04:24 +00:00
parent
4916487440
commit
475ccefd97
@ -1,7 +1,8 @@
|
||||
define( [
|
||||
"jquery",
|
||||
"ui/core",
|
||||
"ui/data"
|
||||
"ui/data",
|
||||
"ui/focusable"
|
||||
], function( $ ) {
|
||||
|
||||
module( "core - selectors" );
|
||||
|
36
ui/core.js
36
ui/core.js
@ -22,6 +22,7 @@
|
||||
"jquery",
|
||||
"./data",
|
||||
"./disable-selection",
|
||||
"./focusable",
|
||||
"./version"
|
||||
], factory );
|
||||
} else {
|
||||
@ -180,44 +181,11 @@ $.fn.extend( {
|
||||
}
|
||||
} );
|
||||
|
||||
// selectors
|
||||
function focusable( element, hasTabindex ) {
|
||||
var map, mapName, img,
|
||||
nodeName = element.nodeName.toLowerCase();
|
||||
if ( "area" === nodeName ) {
|
||||
map = element.parentNode;
|
||||
mapName = map.name;
|
||||
if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
|
||||
return false;
|
||||
}
|
||||
img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
|
||||
return !!img && visible( img );
|
||||
}
|
||||
return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ?
|
||||
!element.disabled :
|
||||
"a" === nodeName ?
|
||||
element.href || hasTabindex :
|
||||
hasTabindex ) &&
|
||||
// the element and all of its ancestors must be visible
|
||||
visible( element );
|
||||
}
|
||||
|
||||
function visible( element ) {
|
||||
return $.expr.filters.visible( element ) &&
|
||||
!$( element ).parents().addBack().filter( function() {
|
||||
return $.css( this, "visibility" ) === "hidden";
|
||||
} ).length;
|
||||
}
|
||||
|
||||
$.extend( $.expr[ ":" ], {
|
||||
focusable: function( element ) {
|
||||
return focusable( element, $.attr( element, "tabindex" ) != null );
|
||||
},
|
||||
|
||||
tabbable: function( element ) {
|
||||
var tabIndex = $.attr( element, "tabindex" ),
|
||||
hasTabindex = tabIndex != null;
|
||||
return ( !hasTabindex || tabIndex >= 0 ) && focusable( element, hasTabindex );
|
||||
return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
|
||||
}
|
||||
} );
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
"./widget",
|
||||
"./button",
|
||||
"./draggable",
|
||||
"./focusable",
|
||||
"./mouse",
|
||||
"./position",
|
||||
"./resizable",
|
||||
|
64
ui/focusable.js
Normal file
64
ui/focusable.js
Normal file
@ -0,0 +1,64 @@
|
||||
/*!
|
||||
* jQuery UI Focusable @VERSION
|
||||
* http://jqueryui.com
|
||||
*
|
||||
* Copyright jQuery Foundation and other contributors
|
||||
* Released under the MIT license.
|
||||
* http://jquery.org/license
|
||||
*/
|
||||
|
||||
//>>label: focusable
|
||||
//>>group: Core
|
||||
//>>description: Selects elements which can be focused.
|
||||
//>>docs: http://api.jqueryui.com/focusable-selector/
|
||||
|
||||
( function( factory ) {
|
||||
if ( typeof define === "function" && define.amd ) {
|
||||
|
||||
// AMD. Register as an anonymous module.
|
||||
define( [ "jquery", "./version" ], factory );
|
||||
} else {
|
||||
|
||||
// Browser globals
|
||||
factory( jQuery );
|
||||
}
|
||||
} ( function( $ ) {
|
||||
|
||||
// selectors
|
||||
$.ui.focusable = function( element, hasTabindex ) {
|
||||
var map, mapName, img,
|
||||
nodeName = element.nodeName.toLowerCase();
|
||||
if ( "area" === nodeName ) {
|
||||
map = element.parentNode;
|
||||
mapName = map.name;
|
||||
if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
|
||||
return false;
|
||||
}
|
||||
img = $( "img[usemap='#" + mapName + "']" )[ 0 ];
|
||||
return !!img && visible( img );
|
||||
}
|
||||
return ( /^(input|select|textarea|button|object)$/.test( nodeName ) ?
|
||||
!element.disabled :
|
||||
"a" === nodeName ?
|
||||
element.href || hasTabindex :
|
||||
hasTabindex ) &&
|
||||
// the element and all of its ancestors must be visible
|
||||
visible( element );
|
||||
};
|
||||
|
||||
function visible( element ) {
|
||||
return $.expr.filters.visible( element ) &&
|
||||
!$( element ).parents().addBack().filter( function() {
|
||||
return $.css( this, "visibility" ) === "hidden";
|
||||
} ).length;
|
||||
}
|
||||
|
||||
$.extend( $.expr[ ":" ], {
|
||||
focusable: function( element ) {
|
||||
return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
|
||||
}
|
||||
} );
|
||||
|
||||
return $.ui.focusable;
|
||||
|
||||
} ) );
|
Loading…
Reference in New Issue
Block a user