diff --git a/tests/unit/core/core.js b/tests/unit/core/core.js index 0d25e22d8..1eaa055e5 100644 --- a/tests/unit/core/core.js +++ b/tests/unit/core/core.js @@ -2,7 +2,8 @@ define( [ "jquery", "lib/common", "ui/core", - "ui/form" + "ui/form", + "ui/labels" ], function( $, common ) { module( "core - jQuery extensions" ); diff --git a/ui/button.js b/ui/button.js index ec6525d2b..bc391810f 100644 --- a/ui/button.js +++ b/ui/button.js @@ -22,9 +22,9 @@ // AMD. Register as an anonymous module. define([ "jquery", - "./core", "./data", "./keycode", + "./labels", "./version", "./widget" ], factory ); diff --git a/ui/core.js b/ui/core.js index 6c948d058..412354151 100644 --- a/ui/core.js +++ b/ui/core.js @@ -22,11 +22,11 @@ "jquery", "./data", "./disable-selection", - "./escape-selector", "./focusable", "./form", "./ie", "./keycode", + "./labels", "./version" ], factory ); } else { @@ -113,41 +113,6 @@ $.fn.extend( { $( this ).removeAttr( "id" ); } } ); - }, - - labels: function() { - var ancestor, selector, id, labels, ancestors; - - // Check control.labels first - if ( this[ 0 ].labels && this[ 0 ].labels.length ) { - return this.pushStack( this[ 0 ].labels ); - } - - // Support: IE <= 11, FF <= 37, Android <= 2.3 only - // Above browsers do not support control.labels. Everything below is to support them - // as well as document fragments. control.labels does not work on document fragments - labels = this.eq( 0 ).parents( "label" ); - - // Look for the label based on the id - id = this.attr( "id" ); - if ( id ) { - - // We don't search against the document in case the element - // is disconnected from the DOM - ancestor = this.eq( 0 ).parents().last(); - - // Get a full set of top level ancestors - ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); - - // Create a selector for the label based on the id - selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; - - labels = labels.add( ancestors.find( selector ).addBack( selector ) ); - - } - - // Return whatever we have found for labels - return this.pushStack( labels ); } } ); diff --git a/ui/labels.js b/ui/labels.js new file mode 100644 index 000000000..2a78d886b --- /dev/null +++ b/ui/labels.js @@ -0,0 +1,62 @@ +/*! + * jQuery UI Labels @VERSION + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: labels +//>>group: Core +//>>description: Find all the labels associated with a given input +//>>docs: http://api.jqueryui.com/labels/ + +( function( factory ) { + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery", "./version", "./escape-selector" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} ( function( $ ) { + +return $.fn.labels = function() { + var ancestor, selector, id, labels, ancestors; + + // Check control.labels first + if ( this[ 0 ].labels && this[ 0 ].labels.length ) { + return this.pushStack( this[ 0 ].labels ); + } + + // Support: IE <= 11, FF <= 37, Android <= 2.3 only + // Above browsers do not support control.labels. Everything below is to support them + // as well as document fragments. control.labels does not work on document fragments + labels = this.eq( 0 ).parents( "label" ); + + // Look for the label based on the id + id = this.attr( "id" ); + if ( id ) { + + // We don't search against the document in case the element + // is disconnected from the DOM + ancestor = this.eq( 0 ).parents().last(); + + // Get a full set of top level ancestors + ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); + + // Create a selector for the label based on the id + selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; + + labels = labels.add( ancestors.find( selector ).addBack( selector ) ); + + } + + // Return whatever we have found for labels + return this.pushStack( labels ); +}; + +} ) ); diff --git a/ui/selectmenu.js b/ui/selectmenu.js index dc8df9f1b..04808a87d 100644 --- a/ui/selectmenu.js +++ b/ui/selectmenu.js @@ -26,9 +26,12 @@ "./version", "./escape-selector", "./menu", + "./keycode", + "./labels", "./position", "./version", - "./widget" ], factory ); + "./widget" + ], factory ); } else { // Browser globals