]> source.dussan.org Git - jquery-ui.git/commitdiff
Widget: Add a _delay method. Will be used in various places to replace setTimeout...
authorJörn Zaefferer <joern.zaefferer@gmail.com>
Mon, 12 Sep 2011 21:37:14 +0000 (23:37 +0200)
committerJörn Zaefferer <joern.zaefferer@gmail.com>
Mon, 12 Sep 2011 21:37:14 +0000 (23:37 +0200)
tests/unit/widget/widget_core.js
ui/jquery.ui.widget.js

index 0c41425395d4a5836bca7ce297816a39a862ac71..0b272a0d50516d512ab53c3241af89438ad73202 100644 (file)
@@ -1040,4 +1040,28 @@ test( "redefine", function() {
        equal( $.ui.testWidget.foo, "bar", "static properties remain" );
 });
 
+asyncTest( "_delay", function() {
+       expect( 4 );
+       var order = 0,
+               that;
+       $.widget( "ui.testWidget", {
+               defaultElement: null,
+               _create: function() {
+                       that = this;
+                       this._delay(function() {
+                               strictEqual( this, that );
+                               equal( order, 1 );
+                               start();
+                       }, 500);
+                       this._delay("callback");
+               },
+               callback: function() {
+                       strictEqual( this, that );
+                       equal( order, 0 );
+                       order += 1;
+               }
+       });
+       $( "#widget" ).testWidget();
+});
+
 }( jQuery ) );
index 5b7942600aaa4d5c61ff80fa2ab289e53387844b..729e14cf9cbeb7b7c881e1f9514f94f9cb40f762 100644 (file)
@@ -333,6 +333,15 @@ $.Widget.prototype = {
                });
        },
 
+       _delay: function( handler, delay ) {
+               function handlerProxy() {
+                       return ( typeof handler === "string" ? instance[ handler ] : handler )
+                               .apply( instance, arguments );
+               }
+               var instance = this;
+               setTimeout( handlerProxy, delay || 0 );
+       },
+
        _hoverable: function( element ) {
                this.hoverable = this.hoverable.add( element );
                this._bind( element, {