From: Scott González Date: Tue, 22 Mar 2011 18:35:18 +0000 (-0400) Subject: Widget: Maintain stack when a method returns a jQuery object. Fixes #5732 - Widget... X-Git-Tag: 1.9m5~185 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f77224055a65f8343cd53411608a95d98db97138;p=jquery-ui.git Widget: Maintain stack when a method returns a jQuery object. Fixes #5732 - Widget: Make the widget method maintain the stack. --- diff --git a/tests/unit/widget/widget_core.js b/tests/unit/widget/widget_core.js index 319423797..300acd0d8 100644 --- a/tests/unit/widget/widget_core.js +++ b/tests/unit/widget/widget_core.js @@ -74,7 +74,7 @@ test( "element normalization", function() { }); test( "jQuery usage", function() { - expect( 11 ); + expect( 13 ); var shouldCreate = false; @@ -98,6 +98,9 @@ test( "jQuery usage", function() { } else { return this.getterSetterVal; } + }, + jQueryObject: function() { + return $( "body" ); } }); @@ -120,6 +123,9 @@ test( "jQuery usage", function() { ret = elem.testWidget( "getterSetterMethod", 30 ); equals( ret, elem, "getter/setter method can be chainable" ); equals( instance.getterSetterVal, 30, "getter/setter can act as setter" ); + ret = elem.testWidget( "jQueryObject" ); + equal( ret[ 0 ], document.body, "returned jQuery object" ); + equal( ret.end(), elem, "stack preserved" ); }); test( "direct usage", function() { @@ -765,7 +771,7 @@ test( "._trigger() - provide event and ui", function() { .testWidget( "testEvent" ); }); -test( "._triger() - instance as element", function() { +test( "._trigger() - instance as element", function() { expect( 4 ); $.widget( "ui.testWidget", { defaultElement: null, diff --git a/ui/jquery.ui.widget.js b/ui/jquery.ui.widget.js index 6c6ba3864..7c8567ced 100644 --- a/ui/jquery.ui.widget.js +++ b/ui/jquery.ui.widget.js @@ -116,7 +116,9 @@ $.widget.bridge = function( name, object ) { } var methodValue = instance[ options ].apply( instance, args ); if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue; + returnValue = methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; return false; } });