]> source.dussan.org Git - jquery-ui.git/commitdiff
Widget: Added ability to use $.widget() to create extensions. Fixes #6937 - Widget...
authorScott González <scott.gonzalez@gmail.com>
Thu, 3 Feb 2011 21:37:17 +0000 (16:37 -0500)
committerScott González <scott.gonzalez@gmail.com>
Thu, 3 Feb 2011 21:37:17 +0000 (16:37 -0500)
tests/unit/widget/widget_core.js
ui/jquery.ui.widget.js

index 6f493062183bf680f9448a05c7798eb65356b0f2..186c407ed51c84a8c65e3906683fccff116480a0 100644 (file)
@@ -821,4 +821,25 @@ test( "auto-destroy - .detach()", function() {
        $( "#widget" ).testWidget().detach();
 });
 
+test( "redefine", function() {
+       expect( 4 );
+       $.widget( "ui.testWidget", {
+               method: function( str ) {
+                       strictEqual( this, instance, "original invoked with correct this" );
+                       equal( str, "bar", "original invoked with correct parameter" );
+               }
+       });
+       var ctor = $.ui.testWidget;
+       $.widget( "ui.testWidget", $.ui.testWidget, {
+               method: function( str ) {
+                       equal( str, "foo", "new invoked with correct parameter" );
+                       this._super( "method", "bar" );
+               }
+       });
+
+       var instance = new $.ui.testWidget();
+       instance.method( "foo" );
+       equal( $.ui.testWidget, ctor, "constructor did not change" );
+});
+
 }( jQuery ) );
index 1ec934469f084efab2f5957a7d58f711677080b3..6b84f7a9cf8f98b0ec26ced3e6784a184f6ab925 100644 (file)
@@ -36,7 +36,7 @@ $.widget = function( name, base, prototype ) {
        };
 
        $[ namespace ] = $[ namespace ] || {};
-       $[ namespace ][ name ] = function( options, element ) {
+       $[ namespace ][ name ] = $[ namespace ][ name ] || function( options, element ) {
                // allow instantiation without "new" keyword
                if ( !this._createWidget ) {
                        return new $[ namespace ][ name ]( options, element );