Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Core: Add the uniqueId() and removeUniqueId() methods written by @sco…
…ttgonzalez to provide a generalized way of generating and removing generated element id's. Also, added a unit test. Fixed #8361 - Add uniqueId() and removeUniqueId()
  • Loading branch information
kborchers committed May 30, 2012
1 parent 649a670 commit 40e47c0
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
10 changes: 10 additions & 0 deletions tests/unit/core/core.js
Expand Up @@ -153,4 +153,14 @@ test( "outerHeight(true) - setter", function() {
equal( el.height(), 32, "height set properly when hidden" );
});

test( "uniqueId / removeUniqueId", function() {
var el = $( "img" ).eq( 0 );

equal( el.attr( "id" ), undefined, "element has no initial id" );
el.uniqueId();
ok( /ui-id-\d+$/.test( el.attr( "id" ) ), "element has generated id" );
el.removeUniqueId();
equal( el.attr( "id" ), undefined, "unique id has been removed from element" );
});

})( jQuery );
19 changes: 19 additions & 0 deletions ui/jquery.ui.core.js
Expand Up @@ -9,6 +9,9 @@
*/
(function( $, undefined ) {

var uuid = 0,
runiqueId = /^ui-id-\d+$/;

// prevent duplicate loading
// this is only a problem because we proxy existing functions
// and we don't want to double proxy them
Expand Down Expand Up @@ -107,6 +110,22 @@ $.fn.extend({
return 0;
},

uniqueId: function() {
return this.each(function() {
if ( !this.id ) {
this.id = "ui-id-" + (++uuid);
}
});
},

removeUniqueId: function() {
return this.each(function() {
if ( runiqueId.test( this.id ) ) {
$( this ).removeAttr( "id" );
}
});
},

disableSelection: function() {
return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
".ui-disableSelection", function( event ) {
Expand Down

0 comments on commit 40e47c0

Please sign in to comment.